gpt4 book ai didi

Bash:使用 sed 取消注释 XML 标记

转载 作者:行者123 更新时间:2023-11-29 09:44:35 25 4
gpt4 key购买 nike

我目前有一个包含以下内容的文件:

<refrigerator>
<food="watermelon" location="topShelf" />
<!--
<food="mango" location="bottomShelf" />
-->
<!--
<food="orange" location="middleShelf" />
-->
</refrigerator>

如何使用“sed”删除 <!---->所以“芒果”可以从文件中取消注释吗?但是,如果文件中还有其他注释行,我希望它们保持注释状态吗?

谢谢!

最佳答案

sed 不是正确的工具(默认情况下不是多行),请尝试使用 ,这更适合这种情况:

$ perl -i -0777 -pe 's/\s*<!--\s*\n(.*?food="mango".*?)\n\s*-->/\n$1/' file.txt

输出

<refrigerator>
<food="watermelon" location="topShelf" />
<food="mango" location="bottomShelf" />
<!--
<food="orange" location="middleShelf" />
-->
</refrigerator>

说明

  • -i 切换编辑文件就地(就像sed -i)
  • -0777一次读取整个文件(使用-00也可以按段落读取)
  • -p 假定“while (<>) { ... }”循环程序,并打印换行符
  • s///sed 类替换的框架
  • \s 是 Perl 的空白字符
  • .*?代表不贪婪匹配
  • $1 与 sed \1 相同(捕获部分)

文档

关于Bash:使用 sed 取消注释 XML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com