답변:
대안 적으로
awk '!/./ || !seen[$0]++' file
주요 요령은 동일 seen[$0]++
하며, seen
연관 배열에서 키가 현재 줄 ( $0
) 인 항목을 만듭니다 . 따라서이 !seen[$0]++
줄이 이미 보이면 거짓이됩니다. 는 /./
그래서 라인이 아닌 공백 문자가 포함되어 있는지 여부를 확인하고 있습니다 !/./
비 빈 라인을 일치합니다. 이것과 결합 || !seen[$0]++
하면 빈 줄을 제외한 모든 중복 줄을 무시하고 나머지 줄을 인쇄합니다.
awk
@Thor의 답변과 유사하지만 덜 간결하지만 더 효율적인 또 다른 솔루션이 있습니다.
awk '!NF {print;next}; !($0 in a) {a[$0];print}' file
이것으로, 우리는 단지 a[$0]
존재 여부를 확인 합니다. 그렇지 않은 경우 초기화 한 다음 인쇄하십시오. 이 경우 참조 a[$0]
가 존재 하지 않을 경우 할당되지 않습니다 .