awk 본 옵션이 작동하는 방식

awk 본 옵션이 작동하는 방식

나는 최근에 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 }이 예의 모든 계정 및 목적에 대해 수정되지 않은 현재 입력 줄입니다.

관련 정보