2011-03-02 7 views
0

파일 내에서 검색 및 바꾸기를 원합니다.정규 표현식 검색 및 2 조건으로 대체

확장자가 .xml 인 파일 이름 (텍스트 파일 내)을 검색합니다. 확장자가 .xml 인 위치를 찾고 그 바로 앞에있는 텍스트를 변경하십시오.

즉, "05 _ho2s_front.xml을 emission_mazda_3_c1_zjz6_16_"텍스트이 줄을 찾아 텍스트가 "04 _ho2s_front.xml을 emission_mazda_3_c1_zjz6_16_"로 대체합니다.

어떤 도움을 이해할 수있을 것이다, 감사 토미

+0

항상이 형식입니까? 이 파일 이름을 표현할 수있는 가장 일반적인 방법은 무엇입니까 (일관성을 유지하면서)? –

답변

0

그것은 당신의 정규식을 사용하고있는에 약간 의존, 그래서 몇 가지 예를 주었다. BRE를 사용

당신은 사용할 수 있습니다

이 빔이 전체 문서에이 작업을 수행하기 위해, BRE를 사용하기 때문에
s/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/ 

은 다음과 같습니다

%s/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/ 

또는도에, BRE를 사용하는, SED로를 출력은 만든 교체하여 파일 input.txt을 표준 출력 :

sed -e 's/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/' input.txt 

ERE와 동안을 C ould 사용 :

s/(emission_mazda_3_c1_zjz6_16_)(05)(_ho2s_front.xml)/\104\3/ 

이 모든 트릭은 역 참조를 사용하는 것입니다. 처음 두 / 문자 사이의 텍스트는 찾고있는 내용을 나타내며 () 문자를 사용하여 그룹화됩니다. 마지막 두 문자 인 / 사이의 텍스트가 바꿀 내용입니다. 따라서 찾은 텍스트를 첫 번째 그룹 (\1이 의미 함)으로 바꾼 다음 04을 입력하고 세 번째 그룹을 추가하십시오 (\3 의미).