这是我的问题,我正在使用ubuntu,并且正在尝试替换xml文件中的文本。来自我所做的所有更改的txt,下面是一个示例
在replace.txt文件中,我有以下内容
nameofsearch | nameforreplace
nameofsearch1 | nameforreplace1
nameofsearch2 | nameforreplace2 这是软件用于搜索和替换的格式
在xml文件中,我有搜索的名称
这是在.net上做的一个软件,我不能在linux上运行,所以这是我的问题,我该怎么做,使用bash,或者其他类似的东西。
谢谢,塞巴斯蒂安。
发布于 2011-11-03 14:09:37
您要查找的工具是sed。如果要在file1中用str2替换str1,并将结果保存在file2中,请运行:
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发布于 2011-11-03 14:04:21
您可能会尝试使用Mono在Linux上运行.Net应用程序。
您可以使用AWK或Sed进行替换,或者因为您的数据是XML,所以可以使用XSLT
我不明白你是想要替换你搜索的所有名字的所有匹配项,还是只替换第一个找到的名字。
replace.txt文件或您正在处理的XML文件是否很大?
https://stackoverflow.com/questions/7990221
复制相似问题