스크립트에서 두 파일을 비교하고 교환할 때 AWK가 작동하는 방식

스크립트에서 두 파일을 비교하고 교환할 때 AWK가 작동하는 방식

아래 스크립트에서는 awk파일 이름을 바꿀 때 두 가지 다른 결과를 볼 수 있습니다. awk가 어떻게 출력을 콘솔에 쓰는지 알고 싶습니다. 각 경우마다 다른 결과가 나옵니다.

파일 1:

abc bca cdb

abc few bre

bbc bba cdb

cbc frw bte

파일 2:

abc bca cdb

gbc fiw bpe

bbc bca cdb

cbc frw bte

스크립트:

awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file1 file2**

산출:

gbc fiw bpe

bbc bca cdb

스크립트:

awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file2 file1**

산출:

abc few bre

bbc bba cdb

답변1

file2첫 번째 명령은 에서 찾을 수 없는 행을 제공하고, 두 번째 명령은 file1에서 찾을 수 없는 행을 제공합니다.file1file2

주어진 데이터에 대해 코드는 다음과 같습니다.

awk 'FNR==NR { a[$0]++; next } !($0 in a)'

a다음에서 사용된 배열은 어디에 있습니까?첫 번째문서. 마지막 조건은 "첫 번째 파일에서 행을 찾을 수 없으면 (두 번째 파일에서) 행을 인쇄하십시오"입니다.

관련 정보