2011-11-03 5 views
0

우분투를 사용하는 메신저 및 XML 파일의 텍스트를 바꾸려고하는 메신저. 내가 만든 모든 변경 사항이있는 txt에서다른 파일의 텍스트 라인에서 파일의 텍스트를 바꿔

replace.txt 파일

내가이

nameofsearch | nameforreplace 
    nameofsearch1 | nameforreplace1 
    nameofsearch2 | nameforreplace2 

이 소프트웨어가 검색에 사용하고

를 교체하고 XML 파일의 형식이, 나는 nameofsearch에게

일이 내가 리눅스에서 실행할 수 없다는 것을 .net으로 만든 soft에 의해 이루어졌다. 그래서 이것이 내 질문이다. 어떻게해야 할까? bash 나 다른 것을 사용하면된다.

감사합니다. sebastian.

+0

는 참조 http://stackoverflow.com/questions/7974779/using-sed-to-find-and-replace-in-bash-for-loop/7978660#7978660 – tripleee

답변

0

찾으시는 도구는 sed입니다. 당신이 FILE1에서 STR2와 str1과 교체 및 파일 2에 결과를 저장하려면, 실행

sed s/str1/str2 <file1> file2 

당신은 나오지도 정규 표현식으로 str1과를 분석하기 때문에 일부 특수 문자를 이스케이프해야합니다.

두 가지 단계가 필요합니다. 첫 번째 단계는 replace.txtreplace.sed이라고하는 sed 스크립트 파일로 변환합니다. >/ -

sed "s/\s*|\s*/\//g" "replace.txt" | sed "s/\w*\/\w*/s\/&\/g/" > replace.sed 

첫 번째 나오지 호출은 슬래시 |로 파이프 (주변 공백)을 변환합니다. 두 번째 호출은 검색/문자열을 sed 구문으로 둘러 쌉니다. 두 번째 단계는 XML 파일에 주어진 스크립트 파일에 나오지도 실행하는 것입니다

s/nameofsearch/nameforreplace/ 
s/nameofsearch1/nameforreplace1/ 
s/nameofsearch2/nameforreplace2/ 

처럼 replace.sed이 보일 것입니다.

sed -f replace.sed test.xml > replaced.xml 
+0

xml 파일에서 수행해야하는 대체 목록이 있고 replace.txt의이 대체 r은 다음과 같습니다. name_for_search | name_for_replace는 txt 파일을 읽고 xml에 대치 할 수있는 또 다른 방법입니다. –

+0

편집 됨. 나는 이것이 당신을 위해 일하기를 바랍니다. – MBober

+0

나는 이것에 시도를 줄 것이다, 고마워. –

0

Linux에서 .Net 응용 프로그램을 실행하려면 Mono을 사용해보십시오.

당신은 당신의 데이터가 XML이기 때문에, 또는 사용하여 교체 또는 Sed을 할 AWK을 사용할 수

XSLT

당신이 찾고있는 모든 이름의 모든 항목을 바꾸려면 내가 이해하지 못하거나 발견 된 이름의 첫 번째 어커런스 만

replace.txt 파일 또는 처리중인 XML 파일이 큽니까?

+0

실레 안녕하세요, 당신의 answaer 주셔서 감사합니다 , 나는 더 나은 방법으로 설명 할 것이다 : replace.txt에, 나는 이것을 가지고있다 : name_for_search1 | name_for_replace1 name_for_search2 | name_for_replace2 . –

관련 문제