awk의 두 필드 구분 기호 (콜론 및 공백)


8

둘 중 하나가 공백 일 때 awk 명령에 두 필드 구분 기호를 어떻게 지정할 수 있습니까? 나는 awk에 내장 if-else 조건을 사용 하여이 작업을 수행 할 수 있다고 생각하지만 정확한 명령에 대해서는 확실하지 않습니다.

샘플 파일은 다음과 같습니다.

cat test.txt
Swapnil Engineer 20000
Avinash:Doctor:30000
Dattu GovntJob 50000
Amol:Master:10000

두 번째 열 ($ 2)을 인쇄하고 싶습니다. 예상되는 결과는 다음과 같습니다.

Engineer
Doctor
GovntJob
Master

필드 구분자로 공백과 콜론을 모두 넣으려고 할 때 구문 오류와 함께 실패했습니다.

awk -F[ :] '{print $2}' test.txt
awk: cmd. line:1: :]
awk: cmd. line:1: ^ syntax error

두 개의 필드 구분 기호를 사용하고 awk 기능을 어떻게 활용할 수 있습니까?


Yeti의 답변 외에도 쉘은 인용 부호가없는 공백으로 나뉘어 awk에 대한 인수 목록을 생성하므로 -F[ :]arg 대신 a -F[:및 a를 얻습니다 ]. 이 차트 는 매우 유용합니다 (작은 따옴표 나 큰 따옴표는 세로 화살표를 참고하십시오).
arielCo

감사합니다 ArielCo, 대단히 감사합니다!
Swapnil Dhule

답변:


13

당신은 올바른 길을 가고 있습니다!
누락 된 따옴표를 주위에 추가하십시오 [ :].

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.