2013-05-28 1 views
0

파일에서 중복을 어떻게 제거합니까? 단순한 선은 아니지만 블록입니다. 메모장 + + 또는 다른 도구를 사용하여 중복 된 블록을 제거하는 방법은 무엇입니까?

는이 같은 큰 목록을 가지고 :

내가 PARAM1 = ABC와 PARAM2 = KBW로,이 예제에서는 블록을 중복 항목을 제거 할 필요가
define service { 
    param1           ABC 
    param2           XYZ 
    param3           123456 
} 

define service { 
    param1           KBW 
    param2           XYZ 
    param3           100100 
} 

define service { 
    param1           PYJ 
    param2           XYZ 
    param3           99842 
} 

define service { 
    param1           ABC 
    param2           XYZ 
    param3           123456 
} 

define service { 
    param1           KBW 
    param2           XYZ 
    param3           100100 
} 

. 나는 어떻게 선을 제거하기 위해 이것을하는지 안다. 그러나 블록으로 나는 모른다.

find: (define service \{.*?\})(.*?)\1 
replace: $1$2 

을하지만 더 이상 경기가있을 때까지 당신은 완전히 대체하기 버튼을 눌러해야합니다

+0

1)에 대해 같은 과정을 반복, 더 DUPS 당신의 기준을 찾을 수 없습니다 'PARAM1 = ABC와 PARAM2 = KBW' PARAM2 오타인가? 2) dups를 제거한다는 것은 하나의 블록을 고유하게 남겨 두는 것을 의미합니까? 또는 중복이 발견되면 dup과 동일한 모든 블록을 제거해야합니까? 3) 다른 도구? vim/awk/perl/...에 포함됩니까? 예제를 보면 awk가 쉽게 해결할 수 있습니다. – Kent

+0

PHP를 사용하면 $ string = implode (PHP_EOL.PHP_EOL, array_unique (preg_split ('/ (? <=)) (\ r \ n? \ n) + (? = \ w) /' , $ string))); echo $ string;'[demo] (http://codepad.org/axUoApXs). – HamZa

+0

켄트, 나는 오직 하나의 사건을 지키고 다른 사건을 제거해야한다. 이 예에서 4 번째 및 5 번째 블록을 제거해야합니다. – dellasavia

답변

1

당신은 그렇게 할 수 있습니다.

+0

그것은 작동하지 않는 것 같습니다 – dellasavia

+0

@dellasavia : 그것은 작동합니다! 메모장에서 예제 문자열로 테스트했습니다. 6.3.2 dotall 옵션이 체크되었습니다 (도트는 개행과 일치 할 수 있습니다) –

+0

아, 죄송합니다! 그건 진실이야! 내 메모장은 구식 이었어! 나는 필요한만큼 여러 번 달릴거야, 맞지? 내 문제를 해결! 고맙습니다! – dellasavia

0

Notepad++으로 테스트되었습니다. 파일을 열고 CTRL+H을 눌러 Replace 대화 상자를 엽니 다. 우리는 우리의 선택을 제거 할 때문에 ABC

define service \{\s+param1\s+ABC[^}]+\} 

Replace with:에 대한 Find what: 입력 다음 정규식에서

는 빈 남아있을 것입니다. 라디오 버튼 Regular expressionMatches newline 확인란을 선택하십시오.

그런 다음 Find Next을 처음 클릭하십시오. 다시 클릭하여 건너 뛰십시오. 여기에서 중복을 대체하려면 Replace을 클릭하십시오. Replace All을 클릭하면 첫 번째 발생 항목이 대체됩니다. 지금, 당신의 예에서 KBW

define service \{\s+param1\s+KBW[^}]+\} 
+0

라비 타플 리얄 (Ravi Thapliyal), 저는 다른 많은 행사가 있고 무엇을 말할 지 모르겠습니다. 그것은 35,000 개의 블록을 가진 파일이고 많은 것이 중복됩니다. param1의 내용을 정의 할 필요가없는 정규식이 필요합니다. – dellasavia