awk에서“NR == FNR”은 무엇입니까?
을 사용하여 파일 비교를 배우고 있습니다 awk
.
아래와 같은 구문을 찾았습니다.
awk 'NR==FNR{a[$1];next}$1 in a{print $1}' file1 file2
NR==FNR
이것의 의미가 무엇인지 이해할 수 없습니까? 내가 시도 FNR==NR
하면 동일한 결과를 얻습니까?
정확히 무엇입니까?
awk FNR
에서 현재 파일의 레코드 번호 (일반적으로 줄 번호)를 NR
참조하고 총 레코드 번호를 나타냅니다. 연산자 ==
는 두 개의 주변 피연산자가 같을 때 true를 반환하는 비교 연산자입니다.
즉 NR==FNR
, FNR
각 파일의 첫 번째 줄에 대해 다시 1 로 재설정되지만 NR
계속 증가 하므로 첫 번째 파일에 대해서만 조건 이 참 임을 의미합니다 .
이 패턴은 일반적으로 첫 번째 파일에서만 작업을 수행하는 데 사용됩니다. next
가 첫 번째 이외의 파일에서 실행되도록 더 명령을 건너 뜁니다 블록 수단 내부.
조건 FNR==NR
은 동일한 두 피연산자를와 비교 NR==FNR
하므로 동일한 방식으로 작동합니다.
file1에도있는 file2에서 키 (행의 첫 번째 단어)를 찾습니다.
1 단계 : 배열 a를 파일 1의 첫 단어로 채 웁니다.
awk '{a[$1];}' file1
2 단계 : 동일한 명령에서 배열 a를 채우고 파일 2를 무시합니다. 이를 위해 현재 입력 파일의 번호로 지금까지 총 레코드 수를 확인하십시오.
awk 'NR==FNR{a[$1]}' file1 file2
3 단계 : }
파일 1을 구문 분석 할 때 발생할 수있는 작업 무시
awk 'NR==FNR{a[$1];next}' file1 file2
4 단계 : 배열 a에서 발견되면 file2의 키 인쇄
awk 'NR==FNR{a[$1];next} $1 in a{print $1}' file1 file2
조회 NR
및 FNR
AWK 설명서에서 다음 조건이 무엇인지 스스로에게 물어 어떤에서 NR==FNR
다음 예제 :
$ cat file1
a
b
c
$ cat file2
d
e
$ awk '{print FILENAME, NR, FNR, $0}' file1 file2
file1 1 1 a
file1 2 2 b
file1 3 3 c
file2 4 1 d
file2 5 2 e
가 있습니다 awk
내장 변수.
NR
-처리 된 총 레코드 수를 제공합니다.
FNR
-각 입력 파일에 대한 총 레코드 수를 제공합니다.
파일 a.txt 및 b.txt가 있다고 가정합니다.
cat a.txt
a
b
c
d
1
3
5
cat b.txt
a
1
2
6
7
NR 및 FNR은 awk 기본 제공 변수입니다. NR-처리 된 총 레코드 수를 제공합니다. (이 경우 a.txt 및 b.txt 모두) FNR-각 입력 파일에 대한 총 레코드 수를 제공합니다 (a.txt 또는 b.txt의 레코드).
awk 'NR==FNR{a[$0];}{if($0 in a)print FILENAME " " NR " " FNR " " $0}' a.txt b.txt
a.txt 1 1 a
a.txt 2 2 b
a.txt 3 3 c
a.txt 4 4 d
a.txt 5 5 1
a.txt 6 6 3
a.txt 7 7 5
b.txt 8 1 a
b.txt 9 2 1
NR == FNR과 일치하는 첫 번째 항목을 건너 뛰려면 "next"추가
b.txt 및 a.txt
awk 'NR==FNR{a[$0];next}{if($0 in a)print FILENAME " " NR " " FNR " " $0}' a.txt b.txt
b.txt 8 1 a
b.txt 9 2 1
b.txt에는 있지만 a.txt에는 없습니다.
awk 'NR==FNR{a[$0];next}{if(!($0 in a))print FILENAME " " NR " " FNR " " $0}' a.txt b.txt
b.txt 10 3 2
b.txt 11 4 6
b.txt 12 5 7
awk 'NR==FNR{a[$0];next}!($0 in a)' a.txt b.txt
2
6
7
참조 URL : https://stackoverflow.com/questions/32481877/what-is-nr-fnr-in-awk
'Programing' 카테고리의 다른 글
배열로 자바 스크립트 푸시 (0) | 2021.01.09 |
---|---|
CSS : 배경 이미지를 화면의 너비와 높이를 100 % 늘이십니까? (0) | 2021.01.09 |
PHP- (0) | 2021.01.09 |
Eclipse 4.2 (Juno) Tomcat 7에서 '선택한 유형을 사용하여 서버를 만들 수 없습니다' (0) | 2021.01.09 |
IB에 입력 한 UILabel 텍스트에서 새 줄을 \ n 삽입하는 방법은 무엇입니까? (0) | 2021.01.09 |