어제 두 개의 파일을 병합하는 방법을 검색하다가 한 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 검사에 대한 추가 정보이것.