返回参考正则表达式在sed中不起作用

时间:2018-04-18 17:27:17

标签: regex linux sed

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

[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

但输出没有添加First。请帮我解决我在做错的地方。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

You don't need g and + doesn't have a special meaning in this context (BRE syntax). If your file is as said, you could use:

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