Bash 如何";“翻转替换”;使用shell脚本的文件中的字符串
我面临以下问题 假设我有一个文件,其中包含如下内容:Bash 如何";“翻转替换”;使用shell脚本的文件中的字符串,bash,string,shell,sed,Bash,String,Shell,Sed,我面临以下问题 假设我有一个文件,其中包含如下内容: blah blah blah blah more text <tag1>something</tag1> <tag2>something else</tag2> blah blah meh whatever foo bar sed -e 's/tag1/temporarytag/g' -e 's/tag2/tag1/g' -e 's/temporarytag/tag2/g' 废话废话 更多文
blah blah blah blah
more text
<tag1>something</tag1>
<tag2>something else</tag2>
blah blah meh whatever
foo bar
sed -e 's/tag1/temporarytag/g' -e 's/tag2/tag1/g' -e 's/temporarytag/tag2/g'
废话废话
更多文本
某物
别的
废话废话
富吧
我想做的是用tag2替换所有出现的tag1,用tag1替换所有出现的tag2。然而,我不知道怎么做,因为如果我使用像sed's/tag1/tag2/g'
这样的东西,然后sed's/tag2/tag1/g'
,我最终会得到一个只有tag1的文件
我需要的是“翻转”这两个标签
提前谢谢。你能通过一些你知道文件中不存在的标签吗?i、 e
sed 's/tag1/tag99/g'
sed 's/tag2/tag1/g'
sed 's/tag99/tag2/g'
你能通过一些你知道文件中不存在的标签吗?i、 e
sed 's/tag1/tag99/g'
sed 's/tag2/tag1/g'
sed 's/tag99/tag2/g'
将tag1替换为唯一的(tag3),然后将tag2设置为tag1,然后将tag3设置为tag2。将tag1替换为唯一的(tag3),然后将tag2设置为tag1,然后将tag3设置为tag2。为第一次替换添加临时标记如何。大概是这样的:
blah blah blah blah
more text
<tag1>something</tag1>
<tag2>something else</tag2>
blah blah meh whatever
foo bar
sed -e 's/tag1/temporarytag/g' -e 's/tag2/tag1/g' -e 's/temporarytag/tag2/g'
为第一次替换添加一个临时标记怎么样。大概是这样的:
blah blah blah blah
more text
<tag1>something</tag1>
<tag2>something else</tag2>
blah blah meh whatever
foo bar
sed -e 's/tag1/temporarytag/g' -e 's/tag2/tag1/g' -e 's/temporarytag/tag2/g'
我想了想,我想我会用它,但是有更干净的解决方案吗?不用tag99使用tag1tag1,这将确保你不会碰到任何现有的标记。我想了想,我想我会用它,但是有更干净的解决方案吗?不用tag99使用tag1tag1,这将确保您不会点击任何现有标签。这是迄今为止三个答案中的最佳答案,因为它只需一次调用
sed
,并且是一个完整的答案。这是迄今为止三个答案中的最佳答案,因为它只需一次调用sed
,并且是一个完整的答案。