나는 최근에 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]
즉, 현재 입력 행 키와 연결된 배열 요소의 값이 0(또는 비어 있는 경우) 인 경우 다음의 $0
부울 !seen[$0]
값은진짜.
그런 다음 배열의 해당 키에 해당하는 값이 $0
증가합니다. 이는 테스트가 다음을 의미합니다.잘못된$0
다른 모든 경우에는 동일한 값이 발견됩니다.
테스트 효과는진짜입력에 특정 줄이 처음으로 표시될 때잘못된다른 모든 시간.
테스트에 연결된 작업이 없을 때마다진짜, 이것기본작업이 트리거됩니다. 기본 작업 은 현재 레코드를 인쇄하는 { print }
or 와 같습니다 . 이 예에서는 모든 계정과 목적에 대해 현재 수정되지 않은 입력 행입니다.{ print $0 }