反向引用正则表达式在 sed 中不起作用



Team,

我有一个包含以下数据的文件。

[root@ip-1-32-3-67 ~]# cat db
555
555
555
666
666
777

我需要在所有字符串前面添加字符串"First"

预期输出:

First: 555
First: 555
First: 555
First: 666
First: 666
First: 777

我的 sed 命令看起来像。

[root@ip-1-32-8-1 ~]# sed -e 's/([0-9]+)/First: 1/g' db
555
555
555
666
666
777

但是输出不首先添加。请帮助我找出我做错的地方。

您将 BRE POSIX 模式传递给 sed 命令,因此()+ 被视为文字字符。

您可以将-e替换为-r以使模式解析为 POSIX ERE,或者使用

sed 's/[0-9][0-9]*/First &/'

其中[0-9][0-9]*匹配 1 位或多个数字,替换部件中的 & 插入整个匹配项。

你不需要g+在此上下文中没有特殊含义(BRE 语法(。如果您的文件如前所述,您可以使用:

sed 's/^./First: &/' file

最新更新