2011-11-03 143 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 。 –