gpt4 book ai didi

regex - Sed 正则表达式多行 - 替换 HTML

转载 作者:IT王子 更新时间:2023-10-29 01:05:47 27 4
gpt4 key购买 nike

我正尝试在 Linux 系统上使用 sed 替换多行

这是我的文件

<!-- PAGE TAG -->
DATA1
DATA2
DATA3
DATA4
DATA5
DATA6
<div id="DATA"></div>
DATA8
DATA9
<!-- PAGE TAG -->

我做过和失败的尝试!

sed -n '1h;1!H;${;g;s/<!-- PAGE TAG -->.*<!-- PAGE TAG -->//g;p;}' 
sed -n '1!N; s/<!-- PAGE TAG -->.*<!-- PAGE TAG -->// p'
sed -i 's|<!--[^>]*-->[^+]+<!--[^>]*-->||g'
sed -i 's|/\/\/<!-- PAGE TA -->/,/\/\/<!-- PAGE TA -->||g'

<!-- PAGE TAG --> 之间的所有内容应该更换。

这个问题类似 sed multiline replace

最佳答案

虽然@nhahtdh 的回答对于您的原始问题是正确的,但此解决方案是对您的评论的回答:

sed '
/<!-- PAGE TAG -->/,/<!-- PAGE TAG -->/ {
1 {
s/^.*$/Replace Data/
b
}
d
}
'

你可以这样读:

/<!-- PAGE TAG -->/,/<!-- PAGE TAG -->/ -> 对于这些正则表达式之间的行

1 { -> 对于第一个匹配行

s/^.*$/Replace Data/ -> 搜索任何内容并替换为 Replace Data

b -> 分支到结束(在这种情况下表现得像 break)

d -> 否则,删除该行

通过在每个命令后添加分号,您可以使用 gnu sed 将任何一系列 sed 命令变成单行代码(但如果您希望以后能够阅读它,则不推荐这样做):

sed '/<!-- PAGE TAG -->/,/<!-- PAGE TAG -->/ { 1 { s/^.*$/Replace Data/; b; }; d; };'

作为旁注,您真的应该尝试在您的帖子中尽可能具体。 “替换/移除”是指“替换或移除”。如果你想更换它,就说更换。这对我们这些试图回答您的问题的人以及可能遇到相同问题的 future 用户都有帮助。

关于regex - Sed 正则表达式多行 - 替换 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043363/

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