2011-11-03 101 views
0

這裏是我的問題,即時通訊使用的是Ubuntu,以及即時嘗試替換XML文件中的文本..從TXT,我有我做的所有更改,例如從其他文件中的文本行中替換文本

在replace.txt文件我有這個

nameofsearch | nameforreplace 
    nameofsearch1 | nameforreplace1 
    nameofsearch2 | nameforreplace2 

這是該軟件使用的搜索和替換

和XML文件的格式,我有nameofsearch

日是通過.net上的軟件完成的,我無法在Linux上運行,所以這是我的問題,我該如何做,使用bash或其他任何類似的東西。

謝謝,塞巴斯蒂安。

+0

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

回答

0

您正在查找的工具是sed。如果要替換與文件1 STR2 str1和結果保存在文件2,運行:

sed s/str1/str2 <file1> file2 

需要,因爲sed的解析STR1爲正則表達式來逃避一些特殊字符。

就你而言,需要兩個步驟。第一步將您的replace.txt轉換爲我稱爲replace.sed的sed腳本文件。

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

第一SED呼叫將您的配管(和周圍的空格)轉換成斜線| - >/。第二次調用圍繞sed語法搜索/替換字符串。 replace.sed應該像

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

第二步是在XML文件中給出的腳本文件來執行SED。

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

我有一個replacementes的列表,我必須在xml文件中進行操作,並且替換如下所示的replace.txt中的r: name_for_search | name_for_replace theres另一種方式,我可以讀取txt文件,然後在xml –

+0

上進行編輯替換。我希望這對你有用。 – MBober

+0

我會試一試,非常感謝dude .. –

0

您可能會嘗試使用Mono在Linux上運行.Net應用程序。

你可以使用AWK做你的更換,或Sed,或者因爲你的數據是XML,使用XSLT

如果要更換所有的名字都出現您正在尋找我不明白,或只找到第一個名字。

replace.txt文件或您正在處理的XML文件很大嗎?

+0

喜BASILE,感謝您的answaer ,我會用更好的方式解釋: in replace.txt,我有這個: name_for_search1 | name_for_replace1 name_for_search2 | name_for_replace2 。 –