Linux 에서 텍스트 의 중복 줄 을 삭제 하 는 방법

1156 단어
텍스트 처 리 를 할 때 중복 줄 을 삭제 해 야 하 는 경우 가 많 습 니 다.그럼 어떻게 해결 하지?다음은 세 가지 흔 한 방법?
첫째, sort + uniq 로, 단순 uniq 는 안 됩 니 다.
shell> sort -k2n file | uniq

여기 서 저 는 간단 한 테스트 를 했 습 니 다. file 의 중복 줄 이 더 이상 함께 있 지 않 을 때 유 니 크 는 서 비 스 를 모든 중복 줄 을 삭제 합 니 다.정렬 을 거 친 후 모든 같은 줄 이 인접 해 있 기 때문에 unqi 는 중복 줄 을 정상적으로 삭제 할 수 있 습 니 다.
둘째, sort + awk 명령 으로 주의 하 세 요. 단순 awk 역시 안 됩 니 다. 원인 은 같 습 니 다.
shell> sort -k2n file | awk '{if ($0!=line) print;line=$0}'
물론 파이프 뒤의 코드 를 다시 설계 해 보 세 요. sort 명령 이 필요 없 을 수도 있 습 니 다.
셋째, sort + sed 명령 으로 정렬 명령 이 필요 합 니 다.
shell> sort -k2n file | sed '$!N; /^.∗
\1$/!P; D'

마지막 으로 sort 로 정렬 해 야 하 는 텍스트 의 예 를 첨부 합 니 다. 물론 이 정렬 해 야 하 는 이 유 는 간단 합 니 다. 바로 뒤의 알고리즘 을 디자인 할 때의 '국부 성' 입 니 다. 같은 줄 은 서로 다른 구역 에 분산 되 어 나타 날 수 있 습 니 다. 새로운 같은 줄 이 나타 나 면 앞 에 있 는 기록 이 덮어 집 니 다. 이 예 를 보면 이해 하기 쉽 습 니 다.  ffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeefffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggggggggg
사실 이것 은 제 가 마음대로 넣 은 몇 줄 의 글자 입 니 다. sort 를 사용 해 야 하 는 좋 은 예 라 고 생각 하지 못 했 습 니 다. 여러분 이 직접 해 보 세 요.

좋은 웹페이지 즐겨찾기