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

标签 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。请帮助我找出我做错的地方。

最佳答案

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

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

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

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

关于regex - 反向引用正则表达式在 sed 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49905641/

相关文章:

linux - awk输出不会打印到文件

php - 简单的 MySQL 查询 16 秒长

c++ - 有选择地忽略串行端口上的帧错误

python - 打印匹配行和匹配行之前的一行

正则表达式:赛前/赛后环视

javascript - JS 正则表达式 : how to remove first 2 zero's from "08/08/2017"

java - 为什么java regex模式错误出现在windows环境中而不是solaris环境中

Python正则表达式计算数字、字母出现的次数

regex - 替换除行尾以外的值

sed 替换以特定模式开头的行中的单词