【发布时间】:2022-08-13 22:25:20
【问题描述】:
我试图使用这个 sed 命令将no 部分从下面的文本切换到yes,但似乎没有弄清楚。任何帮助将不胜感激!
命令:sed -E \"s@<wodle name=\"docker-listener\">\\n\\s+<disabled>(no)<\\/disabled>@yes@g\" /etc/test.txt
test.txt 中的文本
<wodle name=\"docker-listener\">
<disabled>no</disabled>
</wodle>
<wodle name=\"example\">
<disabled>no</disabled>
</wodle>
更新:我现在使用下面的命令处于更好的状态,但问题是即使 sed 没有找到匹配项,我仍然得到0 的返回码,而不是定义的100。任何线索如何解决这个问题?
sed -E \"N;!{q100};s@<wodle name=\\\"docker-listener\\\">\\n\\s+<disabled>no@<wodle name=\\\"docker-listener\\\">\\n <disabled>yes@g\"
-
请Don\'t Parse XML/HTML With Regex.。我建议使用 XML/HTML 解析器(xmlstarlet、xmllint ...)。
-
sed 通常在单行上工作,因此嵌入的
\\nwon\'t match 除非您告诉 sed 将多行读入模式空间 -
sed \'/<禁用>/s/no/yes/\'