这是我的问题,即时通讯使用ubuntu,我试图替换xml文件中的文本..来自我所做的所有更改的txt,一个例子
在replace.txt文件中我有这个
nameofsearch | nameforreplace
nameofsearch1 | nameforreplace1
nameofsearch2 | nameforreplace2
这是软件用于搜索和替换的格式
在xml文件中,我有nameofsearch
这是通过软件在.net上完成的,我不能在linux上运行,所以这是我的问题,我怎么能这样做,使用bash,或任何其他类似的东西。
谢谢,塞巴斯蒂安。答案 0 :(得分:0)
您可能尝试使用Mono在Linux上运行.Net应用程序。
您可以使用AWK进行替换,或Sed,或者由于您的数据是XML,请使用XSLT
我不明白您是否要替换所有正在搜索的名称,或者只替换找到的第一个名字。
replace.txt
文件或您正在处理的XML文件是巨大的吗?
答案 1 :(得分:0)
您要查找的工具是sed。如果要在file1中将str1替换为str2并将结果保存在file2中,请运行:
sed s/str1/str2 < file1 > file2
你需要转义一些特殊字符,因为sed将str1解析为正则表达式。
在您的情况下,需要两个步骤。第一步将replace.txt
转换为sed脚本文件,我称之为replace.sed
。
sed "s/\s*|\s*/\//g" "replace.txt" | sed "s/\w*\/\w*/s\/&\/g/" > replace.sed
第一个sed调用将管道(和周围的空格)转换为斜杠|
- &gt; /
。第二个调用使用sed语法围绕搜索/替换字符串。 replace.sed
应该看起来像
s/nameofsearch/nameforreplace/
s/nameofsearch1/nameforreplace1/
s/nameofsearch2/nameforreplace2/
第二步是在xml文件上使用给定的脚本文件执行sed。
sed -f replace.sed test.xml > replaced.xml