Sed 团队:如何更换仍然是插入物吗?

我需要在文件中编辑多行
, 如果字符串始于 /av 或者 avpgw/, 然后用新文本替换它们
否则,只需将新文本插入到开头。

我该怎么办 sed ?
已邀请:

快网

赞同来自:

你可以以这种方式做到这一点:


sed -e 's/^avpgw/new text/' -e t -e 's/^av/new text/' -e t -e 's/^/new text/' file


这替换了模板
new text

/s//// 并结束 /t/. 否则,他尝试了以下模式。 也可以看看
https://www.gnu.org/software/s ... mmary
.

您还可以使用拆分命令
;

:


sed 's/^avpgw/new text/; t; s/^av/new text/; t; s/^/new text/' file


或在命令文件中放置命令 sed:


s/^avpgw/new text/
t
s/^av/new text/
t
s/^/new text/


让我们这样称呼它:


sed -f commandfile file


如果要忽略寄存器,请添加 i 在替换团队的尽头,如
s/^av/new text/i

. 另一种方法是使用符号集来设置它。
s/^[aA][vV]/new text/

. 但这并不是特定的
sed

, 为此,您可以一般寻找正则表达式。

喜特乐

赞同来自:

它可以为您工作 /GNU sed/:


sed -r 's/^av/pgw/?.*/replacement/;t;s/^/replacement /' file

要回复问题请先登录注册