메모장에서 중복 행 제거 ++


595

메모장 ++에서 중복 된 행을 제거하고 한 줄만 남겨 둘 수 있습니까?

답변:


760

메모장 ++은 행별로 정렬하고 중복 줄을 동시에 제거하려는 경우이 작업을 수행 할 수 있습니다.

TextFX 플러그인이 필요합니다. 이전 버전의 Notepad ++에 포함 되었으나 최신 버전 인 경우로 이동하여 메뉴에서 추가 할 수 있습니다 Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install. 경우에 따라 호출 될 수도 TextFX Characters있지만 이것은 같은 것입니다

필요한 확인란과 버튼이 메뉴 아래에 나타납니다 TextFX -> TextFX Tools.

"고유 출력 만 정렬 ..."이 선택되어 있는지 확인하십시오. 다음으로, 텍스트 블록 을 선택하십시오 (전체 문서를 선택하려면 Ctrl+ A). 마지막으로 "대소 문자 구분 정렬"또는 "대소 문자 구분 정렬"을 클릭하십시오.

n ++의 메뉴 레이아웃


32
"나이"에도 불구하고 놀랍도록 강력한 플러그인. 표준 NPP 플러그인 오퍼에서 절대로 제거하지 않기를 바랍니다. 이 플러그인의 모든 기능에 대해 생각한 사람은 일종의 "비전"이었습니다.
GeertVc

7
엑셀보다 강력합니다.
Vasu

6
메모장 ++ x64 버전은 어떻습니까? 플러그인 TextFX x64 버전이 존재하지 않음
Geograph

15
TextFx가 64 비트 버전이 아닙니다.
Rhyous

4
@Geograph 그리고 TextFx의 어떤 64 비트 플러그인이 없을 것이보고 메모를 . 따라서 정렬 및 복제 제거를 제공하는 대체 플러그인이 있는지 아는 것이 좋습니다.
Robert

641

Notepad ++ 버전 6부터이 정규식을 검색 및 바꾸기 대화 상자에서 사용할 수 있습니다.

^(.*?)$\s+?^(?=.*^\1$)

그리고 아무것도 교체 . 파일의 마지막 항목은 모든 중복 행에서 제외됩니다.

이를 위해 정렬이 필요하지 않으며 중복 행은 파일의 어느 위치 에나있을 수 있습니다!

"정규 표현식"및 ".와 일치하는 개행"옵션을 확인해야합니다.

메모장 ++ 바꾸기 대화

  • ^ 줄의 시작과 일치합니다.

  • (.*?)모든 문자를 0 번 이상 일치하지만 가능한 한 적은 수로 일치합니다 (줄에 정확히 일치하면 ". 개행과 일치"옵션으로 인해 필요함). 대괄호로 인해 일치하는 행이 저장되며\1

  • $ 줄의 끝과 일치합니다.

  • \s+?^ 이 부분은 다음 행이 시작될 때까지 모든 공백 문자 (개행 문자!)와 일치합니다. ==> 이렇게하면 일치하는 행 뒤의 개행 문자가 제거되어 교체 후에 빈 행이 없습니다.

  • (?=.*^\1$)이것은 긍정적 인 예견입니다. 이것은이 정규 표현식에서 중요한 부분입니다. 파일의 다른 곳에 정확히 같은 행이있을 때 행이 일치하고 제거됩니다.


10
오, 이것은 훌륭합니다. 심지어 빈 행을 삭제합니다. 바로이 순간을 거시합니다 :)
Aprillion

66
경우에 따라 파일의 모든 줄만 제거합니다.
SerG

3
LAST 발생을 제거 할 수있는 방법이 있습니까? 이것은 마지막 하나를 제외하고 모두 일치합니다 ...
Cullub

28
이 솔루션이 모든 라인을 제거한 경우 필자의 선택을 해제 . matches newline하면 트릭이 수행됩니다.
Kuitsi

3
@SerG 어떤 경우에는 나에게도 효과가 없었지만 "개행과 일치"를 제거했을 때 :)
Davidenko

95

행이 서로 바로 뒤에 있으면 정규식 바꾸기를 사용할 수 있습니다.

검색 패턴 : ^(.*\r?\n)(\1)+

다음으로 교체하십시오. \1


1
어쩌면 다른 사람들은 이것으로 운이 좋았지 만 나를 위해 ^ (. * \ n) \ 1 결과는 "텍스트를 찾을 수 없습니다"
b1nary.atr0phy

4
@ b1naryatr0phy "Search Mode"가 "Regular expression"으로 설정되어 있는지 확인하십시오. 또한 Windows 스타일 줄 끝을 처리 할 수 ​​있도록 패턴을 업데이트했습니다.
Grant Peters

3
메모장 ++, 그것은 고급 functios,조차 "또는 \ 연구 \ n을?"가벼운 정규식 엔진을 허용 나던있다 그것은 단지 한 줄에 작동하고 당신은 \ 연구 \ n 개의 문자 $를 사용할 때
스테판 Rogin

3
이것은 하나씩 제거합니다. 여러 번 반복해야합니다. > \ n이 작동하지 않음 (가 많은 교체를보고 생각) - \는 N + 이유를 궁금해

2
@Val, 일치하는 역 참조 부분을 1 회 이상 일치하는 그룹으로 만들면 패턴은 한 번에 N 개의 연속 복제 선과 일치합니다.^(.*\r?\n)(\1)+
Kenigmatic

37

메모장 ++

-> 바꾸기 창

검색 모드에서 정규식 단일 선택 단추를 선택했는지 확인하십시오.

무엇을 찾다:

^ (. *) (\ r? \ n \ 1) + $

다음으로 교체하십시오.

$ 1

전에:

우리는 거기에 생각

우리는 거기에 생각

한 줄

~하는 것이 가능하니

~하는 것이 가능하니

후:

우리는 거기에 생각

한 줄

~하는 것이 가능하니


2
이것이 작동하기 위해 파일을 정렬하지 않아도됩니까?
피터 Mortensen

이 훌륭합니다
레모 Liechti

30

행 순서에 신경 쓰지 않는다면 (당신이 생각하지 않는) Linux / FreeBSD / Mac OS X / Cygwin 상자를 사용하여 다음을 수행 할 수 있습니다.

$ cat yourfile | sort | uniq > yourfile_nodups

그런 다음 메모장 ++에서 파일을 다시여십시오.


3
윈도우 7에서 작동하지 않습니다'cat' is not recognized as an internal or external command, operable program or batch file.
이안 사무엘 맥클린 장로

2
@Iain Elder : cat은 표준 Unix 유틸리티이므로이 답변은 Linux, FreeBSD 및 MacOSX에서 작동하도록 지정합니다. 그 대답은 또한 Cygwyn을 제안합니다 : 이것은 유닉스 스타일의 쉘과 고양이를 제공하는 Windows 프로그램입니다. 짧은 이야기 (너무 늦었습니다!) : Win 7에서는 Cygwin이이를 수행해야합니다.
Travis Clark

11
창에서는 PowerShell을 가지고 :cat yourfile | sort -Unique
Elazar

9
이것들은 "고양이의 무료 사용"의 좋은 예입니다. cat 유틸리티는 잊어 버리고 파일 경로 재 지정을 사용하십시오. sort <yourfile | UNIQ> yourfile_nodups
scott8035

1
@ scott8035, 나는 그 고양이가 해당 명령을 실행하는 데 아무 소용이 동의하지만, 고양이 파일과 같은 비 명백한 명령의 긴 순서를 알아내는 때 나는 고양이로 시작하는 것이 종종 도움이 | sed ... | sed ... | sed ... 등등. 고양이를 사용하는 데는 이유가있을 수 있습니다. 물론 고양이는 마지막에 제거 할 수 있지만 일부는 너무 게으르다.
FORTRAN

17

Notepad ++의 후자 버전에는 TextFX 플러그인이 전혀 포함되어 있지 않습니다. 중복을 정렬 / 제거하기 위해 플러그인을 사용하려면 플러그인을 다운로드하여 설치 (추가)하거나 플러그인 관리자를 사용하여 추가해야합니다.

A) 쉬운 방법 ( 여기에 설명되어 있음 ).

플러그인-> 플러그인 관리자-> 플러그인 관리자 표시-> 사용 가능한 탭-> TextFX 문자-> 설치

B) 다른 버전이 필요하거나 쉬운 방법이 작동하지 않는 경우 더 복잡합니다.

  1. SourceForge에서 플러그인을 다운로드하십시오.

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip

  2. zip 파일을 열고 NppTextFX.dll을 추출 하십시오.

  3. 장소 NppTextFX.dll : 같은 메모장 ++ 플러그인 디렉토리,
    C : \ 프로그램 파일 \ 메모장 ++ \ 플러그인

  4. 메모장 ++를 시작하면 TextFX는 파일 메뉴 항목 중 하나입니다 (Colin Pickard의 위의 답변 # 1에서 볼 수 있음)

TextFX 플러그인을 설치 한 후 답변 # 1의 지침에 따라 중복 항목을 정렬하고 제거하십시오.

또한 이 명령을 자주 사용하거나 정렬을 위해 TextPad에서 F9와 같은 키보드 단축키를 복제하려는 경우 설정> 단축키 매퍼를 사용하여 키보드 단축키 설정을 고려하십시오 .


notepad ++ 7.6에서는 플러그인을에 추가해야합니다 C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX. 그 외에는 여전히 잘 작동합니다.
P_W999

14

버전 7.8에서는 플러그인-편집-> 라인 조작-> 연속 중복 라인 제거없이이를 수행 할 수 있습니다. 이 작품 이전에 연속적인 순서로 중복 라인을 배치 할 파일을 정렬해야합니다,하지만 마법처럼 작업을 수행합니다.

정렬 옵션은 편집-> 라인 작업-> 정렬 기준 ...에서 사용할 수 있습니다.


7

이를 위해 플러그인이 필요할 수 있습니다. ConyEdit 의 명령 행 cc.ddl(중복 행 삭제)을 시도 할 수 있습니다 . Notepad ++를 포함한 텍스트 편집 기용 크로스 에디터 플러그인입니다.

ConyEdit이 백그라운드에서 실행 중이면 아래 단계를 수행하십시오.

  1. 명령 줄을 입력 한 cc.ddl텍스트의 끝에서.
  2. 텍스트와 명령 행을 복사하십시오.
  3. 붙여 넣으면 원하는 것을 볼 수 있습니다.


여기에 이미지 설명을 입력하십시오


5

정규식을 검색하십시오. \b(\w+)\b([\w\W]*)\b\1\b

를 교체 : $1$2

히트 교체 파일에서 정규 표현식에 더 이상 일치가 없을 때까지 버튼을 누릅니다.


이것을 시도하기 위해 테스트 파일을 만들었지 만 정규 표현식이 작업을 완료하는 데 안정적으로 작동하지 않았습니다.
RockPaperLizard

답변을 개선 할 수 있도록 실패한 예를 제시해 주시겠습니까?
Hesham Eraqi

4

아무도 나를 위해 일하지 않았다.

해결책은 다음과 같습니다.

바꾸다

^(.*)\s+(\r?\n\1\s+)+$

\1

이것을 시도하기 위해 테스트 파일을 만들었지 만 정규 표현식이 작업을 완료하는 데 안정적으로 작동하지 않았습니다.
RockPaperLizard

모든 데이터에 대해 잘 작동했습니다. 내 솔루션이 무엇인지 잊었습니다. 다른 사람들이이 정규식을 개선 할 수 있도록 실패한 부분을 추가하십시오.
Manohar Reddy Poreddy 5

각 줄마다 0-999 사이의 정수를 임의의 순서로, 때로는 중복되는 파일을 만들었습니다. 대부분의 복제본을 제거하지 않았으며 순차적이 아닌 중복을 제거하지 않았습니다.
RockPaperLizard

1
작동 및 작동하지 않는 두 가지 예를 제공하십시오. 누군가를 도울 것입니다.
Manohar Reddy Poreddy

1
^(.*)\s+(\r?\n\1\s+)+$안돼 ^(.*)\s*(\r?\n\1\s*)+$?
Mark Ch

2

Notepad ++에서는 플러그인 관리자를 사용할 수 없습니다 (배포와 함께 제공되지 않음). 수동으로 설치해야하며 ( https://github.com/bruderstein/nppPluginManager/releases ) 그렇게해도 많은 플러그인을 더 이상 사용할 수 없습니다 (TextFX 없음).

필요한 기능이 포함 된 다른 플러그인이있을 수 있습니다. 그 외에 메모장 ++에서 수행하는 유일한 방법 은 일치하고 교체하기 위해 특별한 정규식 을 사용하는 것입니다 ( Ctrl+ F바꾸기 탭).

편집 메뉴 항목 (트리밍, 빈 줄 제거, 정렬, EOL 변환)을 통해 사용 가능한 많은 기능이 있지만 "고유 한"작업은 없습니다.

Windows 10을 사용하는 경우 Bash활성화하고 (Microsoft Store에서 Ubuntu를 입력하고 설명의 지침에 따라 설치)을 사용할 수 있습니다 cat your_file.txt | sort | uniq > your_file_edited.txt. 물론 "your_file.txt"와 동일한 작업 디렉토리에 있거나 경로를 통해 참조해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.