필요한 단어가 포함 된 줄을 제외하고 메모장 ++에서 모든 줄을 삭제 하시겠습니까?


답변:


292

이것을 달성하는 쉬운 방법이 있습니다. 3 단계를 수행해야합니다.

  1. 검색 메뉴> 찾기 ...> "표시"탭으로 이동하십시오. 정규식을 활성화하십시오. ^<Path>( ^라인 시작을위한 것)을 검색하십시오 . "책갈피 줄"을 확인하고 "모두 표시"를 누르는 것을 잊지 마십시오

    ==> 유지하려는 모든 행에 책갈피가 있습니다.

  2. 메뉴 "검색-책갈피-역 책갈피"로 이동

    ==> 삭제하려는 모든 라인이 북마크됩니다.

  3. 메뉴 "검색-책갈피-책갈피 된 줄 제거"로 이동

    ==> 북마크 된 모든 줄이 삭제됩니다.


47
+1. 니스, 이것에 대해 몰랐다. 시간을 절약 할 수있는 "표시되지 않은 줄 제거"또는 "표시된 줄 잘라 내기 / 복사"옵션도 있습니다.
deizel

6
Notepad ++의 버전 (6.2.3)에 "Mark Tab"이라는 메뉴 항목이 없기 때문에 처음에는 문제가있었습니다. 대신 "검색"-> "찾기 ..."-> "표시"탭을 클릭해야합니다. 그리고 더 이상 북마크를 반전시킬 필요가 없습니다. 메모장 ++에는 이제 "표시되지 않은 줄 제거"가 있습니다. 그러나 당신의 팁은 저에게 많은 도움이되었습니다! 감사!
aakoch

22
"표시되지 않은 줄 제거"를 선택할 수 있기 때문에 2 단계를 건너 뛸 수 있습니다 (적어도 v6.4.5 이후).
율리우스

4
나는 오랫동안 메모장 ++을 사용하고 있으며 이전에는 '북마크'가 무엇인지 결코 알지 못했습니다. 그 도구가 얼마나 강력하고 내가 아는 것이 얼마나 놀라운 지 놀랍습니다.
Danubian Sailor

당신은 성실합니다. 이것은 실제 도구를 사용하는 방법에 대한 또 다른 충격적인 예입니다.
Marcello Grechi Lins

67

이것은 실제로 6.3에서 두 단계로 수행 할 수 있습니다. 처음 시도했을 때 5.9가 있었기 때문에 이전보다 더 빨리 할 수 ​​있다고 생각합니다.

이 답변의 기초로 stema의 게시물을 사용합니다. 이제 한 걸음 더 적은 단계가 있습니다. 선을 표시하고 표시되지 않은 선을 제거하십시오. 끝난. 자세한 지침은 다음과 같습니다.

  1. 검색 메뉴 "찾기". 찾기 대화 상자에서 "표시"탭을 클릭하십시오. 정규식을 활성화하십시오. ^<Path>( ^라인 시작을위한 것)을 검색하십시오 . "책갈피 줄"을 확인하고 "모두 표시"를 누르는 것을 잊지 마십시오

    ==> 유지하려는 모든 행에 이제 책갈피가 있습니다.

  2. 검색 메뉴-> 책갈피-> 표시되지 않은 줄 제거.

    ==> 모든 NON 책갈피 된 줄이 삭제됩니다.


3
다른 솔루션은 20 초 이상 걸렸습니다. 고마워!
Black

^검색어에 를 추가 하거나 정규 표현식을 사용할 필요가 없었습니다 . 이것이 누군가를 돕기를 바랍니다.
sa_leinad

29

깨끗한 정규식 전용 솔루션

2 단계 변형

  1. 정규식 교체

    (?!^.*test.*$)^.+
    

    테스트를 요청한 텍스트로 교체

  2. 바꾸다

    [\r\n]{2,}
    

    \r\n

단일 단계 변형

^(?!<Path>).*\r\n일치하는 항목을 빈 문자열로 바꾸는 데 사용 합니다. 일반화 된 버전은입니다 ^(?!.*?test).*\r\n. 파일 끝에서 빈 줄은 제거되지 않습니다. 여러 개의 연속 된 빈 줄을 포함하여 다른 모든 줄이 제거됩니다.

설명:

  1. (?!)부정적인 조회입니다. ^.*test.*$ 요청한 텍스트가 포함 된 전체 줄을 선택합니다.

  2. [\r\n]{2,}\r\nWindows New 줄이되면 다시 발생 하는 모든 항목과 일치합니다 . Linux 또는 다른 운영 체제가있는 경우이 문제를 해결해야 할 수도 있습니다. 두 번째는 하나의 리턴 라인으로 바꾸는 것입니다.


1
사람들에 대한 참고 : 때때로 EOL (end of line)이있는 정규식은 "작동하지 않습니다". 이 \r\n게시물에 언급 된 EOL은 Windows가 사용하는 것이므로 찾고자하는 것일 수도 있고 아닐 수도 있습니다. Linux 환경에서는 종종 \n, Mac 환경 \r에서는이므로 파일을 가져 오면 Windows 스타일 EOL이 아닙니다. 당신은 FileZilla를 통해 다운로드하여 ASCII 모드 트리거 경우,이 설정을 변경할 수 있습니다 다시 윈도우 EOL에 (같은 \n으로 \r\n). 따라서 정규식이 작동하지 않으면 "보기> 기호 표시> 줄 끝 표시"로 이동하여 EOL 스타일을 확인하십시오. CR = \r. LF = \n.
dhaupin

5

가장 쉬운 방법은 "현재 문서에서 모두 찾기"기능을 사용한 다음 결과를 새 파일로 복사하거나 모두 선택하여 현재 파일로 바꾸는 것입니다.

텍스트가 포함 된 모든 줄을 찾아 맨 아래에 나열합니다. 검색 결과를 마우스 오른쪽 버튼으로 클릭하고 복사 / 붙여 넣기하십시오.


를 교체하여 줄 번호를 제거해야합니다 \tLine [\d]*: . 여전히 좋은 대답입니다.
Noumenon

메모장 + +가 검색 결과 창에서 잘릴 정도로 넓은 행에서는 작동하지 않습니다.
MasterJoe2

4

메뉴 검색 -> 찾기 ...- > 정규식 활성화로 이동하십시오 . "^ 경로 "를 검색하십시오 (^는 줄 시작을 나타냅니다).

"현재 문서에서 모두 찾기"버튼을 클릭하십시오.

패턴 찾기 모든 라인과 함께 "결과 찾기"창이 나타납니다. 메모장 ++에서 새 탭에 복사 / 붙여 넣기를 선택하십시오.

이 새 탭에서 메뉴 검색 -> 바꾸기 ...- > 정규식 활성화로 이동 하십시오 .

"찾을 내용 :"필드에 "Line \ d + :"패턴을 사용하십시오. "다음으로 바꾸기 :"필드를 비워 두십시오.

"모두 바꾸기"버튼을 클릭하십시오.


3

<Path>파일 시스템 경로가 아니라 실제로 일치시키려는 경우 Perl을 사용하여 명령 행에서 시도 할 수 있습니다.

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

Windows에서 Strawberry Perl과 함께 작동 했으므로 결과가 예상과 다른 경우 적절하게 조정하십시오.


3

어색하지만 Excel로=IF(LEFT(A1,6)="<Path>",A1,"") 복사 한 다음 해당 수식 을 사용 하여 복사하십시오. 그런 다음 메모장 ++로 다시 복사하십시오. 이상적이지는 않지만 Excel이있는 경우 매우 쉽습니다. 경고 : 들여 쓰기 된 줄에서는 제대로 작동하지 않습니다 (Excel은 열 등을 이동시킵니다).


이 작업을 직접 처리 할 수있는 방법이 여러 가지 있는데 왜 다른 응용 프로그램에 파괴적으로 복사하여 처리하고 다시 전송하고 싶습니까?
Baldrickk

1

메모장 ++로 원하는 것을 쉽게 할 수있는 방법은 없습니다. 컴퓨터에 프로그램을 다운로드하거나 VB로 스크립트를 작성해야합니다 (Windows에 있다고 가정합니다).

sed를 사용하여 두 가지 방법 중 하나를 수행 할 수 있습니다. sed 유틸리티는 * nix에서 선호하는 것으로 GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htm ) 에서 Windows 용으로 찾을 수 있습니다 . 이 프로그램을 다운로드 한 다음 명령 프롬프트에서 명령을 실행하십시오.

다음을 포함하지 않는 모든 행을 삭제하십시오.
sed -i '/^<PATH>/!d' file

새 파일에 포함 된 모든 줄을 인쇄하십시오.
sed -n '/^<PATH>/p' file > newfile

원하는 줄을 새 파일로 인쇄하는 것이 좋습니다. 그 이유는 아마 정규 표현식을 처음으로 얻지 못하기 때문입니다. sed 유틸리티는 정규식 기본 구문을 사용합니다 ( http://www.regular-expressions.info/reference.html 참조 ). * nix 경로 (/ var / www)와 비슷한 경우 정규식이 작동하려면 / 문자를 이스케이프해야합니다.

예 : sed -n '/^\/var\/www/p' file > newfile
'/ var / www'로 시작하는 모든 줄을 인쇄합니다. / 문자를 이스케이프 처리하려고하면 명령에 오류가 발생했을 것입니다. 백 슬래시 문자 \로 특수 문자 (예 : /)를 이스케이프 할 수 있습니다.


이것은 오래된 대답 일 수는 있지만 실제로 믿을 수 없을 정도로 2 투표 (지금은 나에게서-1)를 가지고 있기 때문에 그것이 얼마나 잘못되었는지에 대해 언급하고 싶었지만 SINGLE 명령 작업에서 반복적으로 (100k)> 이 정규식을 FIND WHAT : ^ (?!. *? error)에 배치하여 3 초 이내에 한 단어 (또는 구)를 포함하는 34 행으로 로그 파일을 간단히 "오류"로 지정하십시오. * \ r \ n과 함께 REPLACE WITH를 비워두고 ".와 일치하는 개행"을 선택하지 말고 "모두 바꾸기"를 클릭하십시오. 예, 나는 또한 sed와 awk를 좋아하지만 NPP가 이것을 할 수 없다고 말하는 것은 단지 거짓입니다.
Collin Chaffin

1

정규식 대체를 사용하는 더 나은 솔루션 :

(?!^.*SOMETEXT.*$)^.+\r?\n

그리고 아무것도 대체하지


1
슈퍼 유저에 오신 것을 환영합니다! 정규식의 각 비트가 무엇인지 알지 못하는 사람들을 위해 이것을 설명해야합니까? :)
bertieb

0

검색-> 바꾸기를 사용하고 정규 표현식을 입력하고을 사용 ^[^ ].*하여 모두 빈 문자열로 바꿉니다 Regular expression. 다음 단계는 (사용 및 파일 형식에 따라) 까지 여러 번 사용하여 \n\n바꿀 빈 줄을 찾는 것입니다 . 행에 빈 줄이 너무 많으면 검색 문자열에서 더 빨리 또는 더 많이 사용하는 것이 더 빠릅니다 .\nExtended0 occurrences were found.\r\n\r\n\r\n\n\n\n\n\n\n\n\n

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