이 awk 진술을 설명해주세요.

이 awk 진술을 설명해주세요.

어제 두 개의 파일을 병합하는 방법을 검색하다가 한 awk조각을 발견했습니다.

간단한 병합이 필요하므로 sort -u이 방법은 아니지만 아래 코드는 작동합니다.

누군가 이 awk코드의 기능을 설명할 수 있나요?

awk '!a[$0]++' file_1 file_2

답변1

!a[$0]++      Remove duplicate, nonconsecutive line

이것은 awk의 한 줄의 코드입니다. 연관 배열 "a"(배열은 Awk에서 항상 연관됨)에 표시된 행을 등록하는 동시에 이전에 해당 행을 본 적이 있는지 테스트합니다. 이전에 해당 줄을 본 적이 있다면 a[line] > 0 및 !a[line] == 0입니다.

false로 평가되는 모든 표현식은 작동하지 않으며, true로 평가되는 모든 표현식은 "{ print }"와 같습니다. 빈 문 "a[$0]"은 배열에 요소를 생성합니다.

awk 검사에 대한 추가 정보이것.

관련 정보