여러 개의 서로 다른 여러 값을 한 번에 찾아서 바꾸기


15

나는의 여러 인스턴스를 가진 파일이 Text_1Text1나는 그와 문자열을 모두 교체해야 Text_A하고 TextB각각을.

현재 각 파일에 대해 두 개의 찾기 및 바꾸기 기능을 수행하고 있습니다. 하나는 찾아서 Text_1바꾸고 Text_A다른 하나는 찾아서 Text1바꿉니다 TextB.

"찾기 및 바꾸기"를 두 번 실행하는 대신이 모든 작업을 한 번에 수행 할 수 있습니까?

Dreamweaver CS3를 사용하고 있지만 메모장 ++, 일반 메모장, OO 작성기, MS Word도 더 쉽습니다. 이상적으로는 Dreamweaver 또는 Notepad ++ 에서이 작업을 수행 할 수 있지만 작업을 수행하기 위해 다른 것을 다운로드 할 수 있습니다. 명령 줄 작업을 수행하거나 배치 파일을 만들지 않고 싶습니다 (알고있는 동안 실제로 이해하지 못합니다).

위의 설명이 명확하지 않은 경우 다음과 같이 설명하겠습니다.

하나의 문서 에서 찾기 및 바꾸기를 1 번 실행 하고 하나의 찾기 및 바꾸기 인스턴스 중에 다음을 모두 수행하려고합니다 .

  1. 찾기 Text_1바꾸기Text_A
  2. 찾기 Text1바꾸기TextB

나는 하지 찾기 '를하고 여러 문서를 통해 교체하려고합니다.


고유 한 패턴이있는 경우 Regexp 찾기 및 바꾸기를 사용하는 것이 가능할 수 있습니다. 그렇지 않으면 @matt
Sathyajith Bhat이

답변:


9

Sed를 살펴보십시오 . 하나의 명령 줄만으로 쉽게 목표를 달성 할 수 있습니다

sed -e "s/Text_1/TextA/" -e "s/Text1/TextB/" <your_file.txt>your_file_new.txt


24

메모장 ++ 6.0부터는 다음 기술을 사용하는 스크립트없이 실제로 가능합니다.

찾기 : Text_1 및 바꾸기 : Text_A

찾기 : Text2 및 바꾸기 : TextB

찾기 : (Text_1) | (Text2)

바꾸기 : (? 1Text_A) (? 2TextB)

일반적인 구문은 다음과 같습니다.

Find: (FindA)|(FindB)|(FindC)...

Replace: (?1ReplaceA)(?2ReplaceB)(?3ReplaceC)...

? 1은 첫 번째 캡처 된 문구 등을 나타냅니다.

나는 다음 대답에서 이것을 얻었습니다 : https : //.com/a/16104946/287101


3

Notepad ++를 사용하면 다음 중 하나를 수행 할 수 있습니다.

  • 바꾸려는 단어가 포함 된 모든 파일을 열고 열려있는 모든 파일에서 찾기 / 바꾸기를 사용하십시오.

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

  • 파일에서 찾기 / 바꾸기 사용

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

  • 찾기 및 바꾸기 옵션을 수행하는 매크로를 기록하고 재생


그것은 내가하려는 일이 아닙니다. 한 번에 여러 파일에서 바꾸고 싶지 않고 한 파일에서 여러 문자열을 한 번에 바꾸고 싶습니다. 하나의 찾기 및 바꾸기를 실행하고 문서를 검색하고 Text_1의 모든 인스턴스를 Text_A로 바꾸고 Text1의 모든 인스턴스를 TextB로 바꾸도록하고 싶습니다. 하나의 파일에서 두 개의 개별 문자열이 두 개의 개별 값으로 대체되었습니다.
matt

이미지 링크가 깨져서 어떻게 든 고칠 수 있습니까?
Bobby

2

두 개의 다른 교체가 발생하므로 찾기 및 바꾸기를 두 번 실행하는 것이 좋습니다. 그러나 처리 시간에는 거의 트레이드 오프가 없어야합니다. 다음을 고려하세요:

찾기 및 바꾸기를 한 번 실행하여 용어별로 용어를 검색하십시오.

Get Term
  Does term match?  If so, replace term
Get Next Term
...

달리기 목적으로 우리는 그것이 선형이라고 가정하고 이것이 O (n) 시간에 실행된다고 말합니다.

두 가지 다른 용어를 찾고 싶습니다. 찾기 및 바꾸기를 두 번 실행하면 다음과 같습니다.

Get Term
  Does term match?  If so, replace term
Get Next Term
...

Get Term
  Does term match?  If so, replace term
Get Next Term
...

O (2x1n) 시간이 걸리거나 한 용어를 검색하는 데 두 배가 걸립니다.

두 개의 대체로 두 개의 용어를 검색하면 이론적으로 다음과 같습니다.

Get Term
  Does first term match?  If so, replace first term
  Does second term match?  If so, replace second term
Get Next Term
...

용어를 얻는 데 많은 처리 능력이 필요하지 않으므로 본질적으로 각 용어에 대해 두 세트의 검색을 찾고 O (1x2n)의 시간을 제공하고 한 번만 실행하지만 두 개의 용어를 검색합니다.

각 용어를 두 번로드하지 않으면 시간을 절약 할 수 있지만 각 용어를 두 번 검색하는 데 더 많은 시간을 소비하므로 트레이드 오프가 거의 없으며이 기능은 한 번의 대체로 한 용어를 검색하는 것보다 덜 자주 사용되므로 응용 프로그램 개발자는 작성하지 않는 것으로 가정합니다. 그 기능.

프로그래머에 대한 부인 : 이것은 일반적인 예입니다. 나는 그것이 더 낫다는 것을 알고 있지만 그 기능을 찾을 수없는 이유를 보여 주려고합니다.


0

Notepad ++의 정규식 지원은 심각하게 제한됩니다. 교대 연산자가 없다면, 당신이하고 싶은 것에 가까이 갈 희망도 없습니다. sed정규식을 더 잘 지원하는 편집기 나 편집기 를 사용해야 합니다.

정규식 구문에 일반적으로 사용되는 GNU 확장은 다음과 같습니다.

  • ? 0 또는 종류 중 하나를 의미하는 연산자;
  • | 대체 연산자 ( "foo | bar"는 "foo"또는 "bar"중 하나와 일치)
  • 탐욕스러운 경우 / g 또는 대소 문자를 구분하지 않는 / i와 같은 수정 자;
  • {a, b}는 종류의 a와 b 토큰 사이를 나타냅니다.
  • (패턴) + 동일한 패턴의 하나 이상의 일치를 수행

Notepad ++를 지원하는 Scitilla 구성 요소는 POSIX와 완벽하게 호환되며 이러한 확장을 인식하지 못합니다. 완전한 런 다운 및 일부 예제는 정규식을 참조하십시오.

출처

또한보십시오

sedWindows 용 GNUWin32


0

배치 찾기 및 바꾸기에 TextCrawler를 사용합니다. (Textcrawler보다 빠르기 때문에 여러 파일에서 단일 검색 / 바꾸기에 메모장 ++을 사용합니다.) TextCrawler는 일반 검색 및 찾기뿐만 아니라 정규 표현식을 지원합니다. 배치 파일은 나중에 사용하기 위해 저장하고 다시로드 할 수 있습니다.


답변에 소프트웨어를 추천하는 방법을 참조하십시오 . 특히 최소한 소프트웨어를 어디서 구할 수 있는지 말하십시오.
G-Man, 'Reinstate

배치 기능은 무료 버전의 TextCrawler에서만 사용할 수 있습니다.
Hobbes

0

또한 메모장 ++ 용 ActiveX 플러그인을 사용하고 사용자 지정 스크립트를 실행하여 수행 할 수 있습니다.

NppApplication.activeEditor.text
=NppApplication.activeEditor.text
.replace(/Text_1/g,"Text_A")
.replace(/Text1/g,"TextB")

이것은 작동하지만 ActiveX 플러그인 의 현재 버그 로 인해 스크립트를 실행할 때마다 파일에 NULL 문자가 추가됩니다.
Aidan

-1

이것은 모든 숫자에 적용됩니다 (텍스트 / 기사에서 모든 숫자를 제거하기 위해)

  1. Ctrl + H를 눌러 찾기 및 바꾸기 대화 상자를여십시오.

  2. "찾을 내용"상자에 ^ #를 입력하십시오.

  3. "바꾸기"상자를 비워 두십시오.

  4. 전부 교체.


1
OP는 단순히 숫자를 제거하기를 원하지 않고 문자로 대체하기를 원했습니다.
booyaa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.