vim 중복 줄 삭제(커 브 길 을 걷 는 사람의 피눈물 총화)

이 방법 을 발표 하려 는 이 유 는 내 가 이 문제 에 대해 오랫동안 고민 하여 해결 하지 못 하고 하루 종일 잠 을 자지 못 했 기 때문이다.모두 가 나의 옛길 을 가지 않 기 를 바란다.
  잔말 말고 어서 명령 을 내 려 라.
방법 1
먼저 정렬:sort 다음 삭 제 된 중복 항목 의 다음 항목:g/\%(^\1$\)\@<=\(.*\)$/d
정렬
그리고 중복 항목 의 앞 항목 을 삭제 합 니 다.
:g/^\(.*\)$\1$/d
원본 작성 자 주소:http://vim.wikia.com/wiki/Uniq_-_Removing_duplicate_lines
작가 가 상세 하 게 소개 한 다른 방법 도 그 가 제시 한 것 은 외국인 에 불과 하 다.
방법 2
먼저 정렬 하 는 거 야.(왜 자꾸 정렬 하 는 지 나중에 알려 줄 게.)
:sort
그리고 동시에 정렬 하지 마 세 요.
:sor ur /^/
두 번 째 방법 은 구름 에 의 해 제공 된다.http://lilydjwg.is-programmer.com/
방법
정렬
:sort
그리고 바 꾸 는 방법 으로.
:%s/^\(.*\)\(\1\)\+$/\1/
작성 자 주소http://www.vimer.cn/2009/11/vimgvim%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%9F%A5%E6%89%BE%E6%9B%BF%E6%8D%A25-%E5%8E%8B%E7%BC%A9%EF%BC%88%E5%88%A0%E9%99%A4%EF%BC%89%E9%87%8D%E5%A4%8D%E8%A1%8C.html
다른 방법 은 왜 안 되 는 지,이것 도 상대 적 인 것 이다.만약 당신 이 10 여 개의 데 이 터 를 처리 하 는 것 이 라면 기본적으로 모든 방법 이 가능 하 다.만약 당신 이 수천 개 를 처리한다 면 각종 bug 를 처리 할 것 입 니 다.왜 일 까요?각종 데이터 형식 은 전면적 이지 않 습 니 다.사례 를 보 여 주세요.
케이스
1,먼저 구 글 검색 viw 중복 행 2 위
http://hi.baidu.com/asnahu/blog/item/2272ecb435417e788bd4b2a4.html
이 문제 로 걱정 하 는 사람 은 많은 사람들 이 그의 bolg 를 보 았 을 것 이다.먼저 작가 의 방법 을 살 펴 보 겠 습 니 다.
:%s/\(.*\)\1/\1\r/g:g/^$/d
우 리 는 직접 효 과 를 보 았 다.나 는 478 줄 의 데 이 터 를 캡 처 하여 테스트 를 했다.
명령 실행 전
우리 가 삭제 하려 고 하 는 데 이 터 는 노란색 표지 이다.
이제 정렬 의 좋 은 점 을 보 셨 죠?명령 이 맞 는 지 육안 으로 도 알 수 있 습 니 다.
실행 명령
:%s/\(.*\)\1/\1\r/g
:g/^$/d
우 리 는 그림 을 본다.
두 가지 이상 중복 되 는 데 이 터 를 정상적으로 처리 할 수 없 으 며,이 줄 에 이전 줄 의 모든 데이터 가 포함 되 어 있 으 면 포 함 된 것 은 삭 제 됩 니 다.저 자 는 분명히 줄 시작 표 지 를 사용 하지 않 았 습 니 다^검색 조건 으로 합 니 다.
2.그리고 블 로 거들 이 제공 하 는 명령 강화 판 을 본다.
사실 저희 의 방법 중 하나 입 니 다.일부 명령 을 삭제 합 니 다.
:g/^\(.*\)$\1$/d :g/\%(^\1$\)\@<=\(.*\)$/d
둘 다 앞의 명령 과 나의 것 이 비슷 하 다.중복 항목 의 앞 항목 을 삭제 하 는 것 이다.뒤에 있 는 명령 이 삭 제 된 중복 항목 의 뒤에 있 는 내용 입 니 다.두 명령 이 독립 된 것 을 주의 하여 각각 사용 할 수 있 습 니 다.g 명령 에 대해 잘 모 르 겠 습 니 다.전체 명령 입 니 다.나중에 전면적으로 소개 하 겠 습 니 다.
블 로 거들 은 두 명령 이 독립 적 이 고 모든 것 이 우리 가 원 하 는 일 을 완성 할 수 있다 는 것 을 분명히 말 했다.우리 가 뭘 더 기 다 려?직접 테스트?
정렬 되 지 않 은 상태 에서 위의 그림.
실행 명령
:g/^\(.*\)$\1$/d
그리고 우 리 는 서열 을 정 한 다음 에 직관 적 으로 효 과 를 본다.위의 그림.
하 나 는 삭제 되 지 않 았 다 는 것 은 정렬 이 어 지 러 운 상태 에서 중복 되 지 않 은 두 가지 가 붙 어 있다 는 것 을 의미한다.
우리 먼저 정렬 하 자.
:sort
서열 을 정 하고 운행 하 다
:g/^\(.*\)$\1$/d
위의 그림
블 로 거들 의 또 다른 강화 판 명령 은 마찬가지다.
여기 보면 다 들 알 겠 지?
정렬 을 하고 올 바른 삭제 명령 을 실행 해 야 합 니 다.
반면교사 1.
http://kangzye.blog.163.com/blog/static/36819223201061705729933/
반복 줄 삭제(순서 부터 정렬):
:sort :g/^\(.\+\)$\1/d
반면 교재 2.
http://hi.baidu.com/ares_esheng/blog/item/b921d35462722958d109065b.html
:%s/^\(.*\)\1/\1$/        : 중복 줄 삭제\#탐욕 이 아 닌 일치,\{-}
복제 하거나 번역 한 문장 은 원작 자가 옳 았 는데,그 가 복제 하 자마자 뜻밖에도 틀 렸 다.
실제 작성 자 주소
http://www.rayninfo.co.uk/vimtips.html
:%s/^\(.*\)\(
\1\)\+$/\1/ : delete multiple duplicate lines [N]

내 가 안 을 닦 았 더 니 밖 이 다 밝 았 다

좋은 웹페이지 즐겨찾기