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
.