[완료 ][awk] 필드 구분자로(-F) "[,]" 을 사용할 수 있나요 ?

자일자일의 이미지

안녕하세요.

list1.txt 파는 파일에 아래와 같은 형식으로 저장 된 리스트가 있습니다.
-------------------------------
필드1[,]필드2[,]필드3[,]필드4
필드1[,]필드2[,]필드3[,]필드4
필드1[,]필드2[,]필드3[,]필드4
필드1[,]필드2[,]필드3[,]필드4
-------------------------------

이 리스트에서 필드3의 내용만 추출하고 싶어 awk를 사용하는데요

awk -F"[,]" '{print $4}' list1.txt 으로 실행하면 필드 구분자 [,]이 인식되지 않아

아래처럼 sed 활용하여 [,] 를 ~~~ 으로 변경해서 추출하고 있습니다.

cat list1.txt | sed "s/\[\,\]/~~~/g" | awk -F"~~~" '{print $4}'

위와 같은 방법 말고, awk만을 이용하여 처리할 수 없을까요?

감사합니다.

wariua의 이미지

-F로 여러 글자의 구분자를 지정하면 이를 정규표현식으로 해석하기 때문에 발생하는 문제입니다. (man awk의 Fields 절 참고)

'[' 앞에 적당한 개수의 '\'를 붙여주시면 됩니다.

$PWD `date`

자일자일의 이미지

awk -F"\\\[,]" '{print $4}' list1.txt
위와 같이 입력하니 원하는 값이 나오네요.

감사합니다.

cedar의 이미지

awk -F \\\\[,\\\\] '{print $3}' list1.txt
또는
awk 'BEGIN{FS="\\[,\\]"}{print $3}' list1.txt

자일자일의 이미지

\ 하나만 붙여 실행 시 값이 정확히 나오지 않아서 안되나 싶었는데
3개를 붙여야 하는군요.
감사합니다.