
나는 최근에 awk를 발견했습니다본옵션. 파일의 중복 항목을 제거하는 것을 볼 수 있습니다. 그것이 어떻게 작동하는지에 대한 설명을 사용할 수 있습니다.
cat tes
1
2
3
1
1
1
3
4
awk 출력으로
cat tes | awk '!seen[$0]++'
1
2
3
4
답변1
seen
연관 배열의 임의의 이름입니다. 그것은 어떤 종류의 선택 사항도 아닙니다. 그 자리에 a
또는 대부분의 다른 이름을 사용할 수 있습니다 .b
코드는 !seen[$0]++
테스트와 증분으로 구성됩니다.
즉 , 현재 입력 행인 seen[$0]
key 와 연관된 배열 요소의 값이 0(또는 비어 있는 경우)이면 의 부울 값은 다음 과 같습니다 .$0
!seen[$0]
진실.
그런 다음 키에 해당하는 배열의 값이 $0
증가합니다. 즉, 테스트가거짓다른 모든 경우에는 동일한 값이 $0
발견됩니다.
그 효과는 테스트가진실입력에 특정 줄이 처음으로 표시될 때거짓다른 모든 시간.
연관된 작업이 없는 테스트가 실행될 때마다진실,기본액션이 발동됩니다. 기본 작업은 현재 레코드를 인쇄하는 { print }
or 와 동일하며 { print $0 }
이 예의 모든 계정 및 목적에 대해 수정되지 않은 현재 입력 줄입니다.