首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他文件中的文本行替换文件中的文本

从其他文件中的文本行替换文件中的文本
EN

Stack Overflow用户
提问于 2011-11-03 12:19:47
回答 2查看 202关注 0票数 0

这是我的问题,我正在使用ubuntu,并且正在尝试替换xml文件中的文本。来自我所做的所有更改的txt,下面是一个示例

在replace.txt文件中,我有以下内容

代码语言:javascript
复制
    nameofsearch  | nameforreplace
    nameofsearch1 | nameforreplace1 
    nameofsearch2 | nameforreplace2 

这是软件用于搜索和替换的格式

在xml文件中,我有搜索的名称

这是在.net上做的一个软件,我不能在linux上运行,所以这是我的问题,我该怎么做,使用bash,或者其他类似的东西。

谢谢,塞巴斯蒂安。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-03 14:09:37

您要查找的工具是sed。如果要在file1中用str2替换str1,并将结果保存在file2中,请运行:

代码语言:javascript
复制
sed s/str1/str2 < file1 > file2

您需要转义一些特殊字符,因为sed将str1解析为正则表达式。

在您的情况下,需要两个步骤。第一步是将replace.txt转换成我称为replace.sed的sed脚本文件。

代码语言:javascript
复制
sed "s/\s*|\s*/\//g"  "replace.txt" | sed "s/\w*\/\w*/s\/&\/g/" > replace.sed

第一个sed调用将管道(和周围的空格)转换为斜杠|->/。第二个调用使用sed语法将搜索/替换字符串包围起来。replace.sed应该看起来像这样

代码语言:javascript
复制
s/nameofsearch/nameforreplace/
s/nameofsearch1/nameforreplace1/
s/nameofsearch2/nameforreplace2/

第二步是在xml文件上使用给定的脚本文件执行sed。

代码语言:javascript
复制
sed -f replace.sed test.xml > replaced.xml
票数 0
EN

Stack Overflow用户

发布于 2011-11-03 14:04:21

您可能会尝试使用Mono在Linux上运行.Net应用程序。

您可以使用AWKSed进行替换,或者因为您的数据是XML,所以可以使用XSLT

我不明白你是想要替换你搜索的所有名字的所有匹配项,还是只替换第一个找到的名字。

replace.txt文件或您正在处理的XML文件是否很大?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7990221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档