我正在尝试用 sed 替换第一个匹配文本块。考虑这个例子。
read -r -d '' VAR <<"EOF"
<Button3d
some text
some text
/>
<Button3d
some text
some text
/>
EOF
sed '1,/^<Button3d/,/^\/>/c {
</Button\
different text\
different text\
/>\
}' <<< $VAR
但是使用 GNU sed 我收到以下错误:
sed:-e 表达式 #1,字符 15:未知命令:`,'
预期输出应该是:
<Button
different text
different text
/>
<Button3d
some text
some text
/>
有些人建议使用 XML 解析器,但是对于这个简单的例子来说,这完全是矫枉过正。
当您sed
支持时-z
,您可以使用类似
sed -z 's#/>#\r#g; s/<Button3d[^\r]*\r//; s#\r#/>#g' <<< "${VAR}"
编辑:其他文本可以插入
sed -z 's#/>#\r#g; s/<Button3d[^\r]*\r/<Button3d\nOther text\nSecond line\n\r/; s#\r#/>#g' <<< "${VAR}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句