조건문과 의미를 구현하여 awk를 사용해 보세요.

조건문과 의미를 구현하여 awk를 사용해 보세요.

8개의 열이 있는 파일이 있고 내 작업 중 하나는 열 3의 값을 가져오는 것입니다. 행의 값이 123과 같지 않으면 열 8이 인쇄되므로 열 3이 123과 같으면 아무 것도 인쇄되지 않습니다. 표시된 내용 인쇄

프로그램의 일부는 ->

testing=`echo $C3  | awk '!/123/ {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt` 

관련 오류는

 awk: illegal field $(), name "C1"
 input record number 1, file 
 source line number 1

123나는 그것을 포함하지 않는 줄 에 대해 awk '!/123/'다음과 같이 스크립트를 작성할 수 있다는 것을 발견했습니다 .부정 일치를 위해 grep을 사용하십시오(foo를 포함하지 않는 일치 라인)..

나도 시도했다

testing=`echo $C3  | awk '!/123/ ; END {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt` 

그러나 오류도 발생합니다.

답변1

awk열 형식 파일 처리를 위해 특별히 설계되었습니다. 각 입력 행을 공백(또는 스위치를 통해 제공하는 다른 항목 -F)으로 자동 분할한 다음 열을 , , ..., awk으로 사용할 수 있습니다 .$1$2$N

따라서 세 번째 열(공백으로 정의됨)이 아닌 행을 인쇄하려면 123다음을 수행할 수 있습니다.

awk '$3!="123"' file

무언가가 true로 평가될 때 기본 작업은 awk인쇄하는 것입니다. 따라서 위 명령은 file세 번째 열이 아닌 모든 행을 인쇄합니다 123.

관련 정보