我正在尝试使用sed捕获类似以下示例的组:
123123 (i would want the first group 123)
144144 (I would want the group 144)
但是sed似乎并没有意识到\ 1是什么。
有什么办法可以使用sed做到这一点?之后,我想用特定的字符串替换第一组。
([0-9]+)\1
我已经尝试使用上述正则表达式,但sed似乎没有意识到我要做什么。
也尝试过:
~/Desktop$ cat file
123123
23231
12323
123231
12345
144144
~/Desktop$ sed -n 's/.*\b\([[:digit:]]\{1,\}\)\1\b.*/\1/p' file
~/Desktop$
~/Desktop$ sed -n -E 's/([0-9]+)\1/specificstring\1/p' file
specificstring12323
specificstring2323
specificstring12323
specificstring14444
~/Desktop$ sed -nE 's/^([0-9]+)\1([^0-9]|$)/\1/p' file
2323
12323
答案 0 :(得分:3)
使用BRE,并避免使用+
,因为它不是POSIX RE的一部分。
$ cat file
123123
23231
12323
123231
12345
144144
$
$ sed -n 's/^\([0-9]\{1,\}\)\1$/\1/p' file
123
144
答案 1 :(得分:1)
之后我想用特定的字符串替换第一组。
使用GNU sed
:
sed -n -E 's/([0-9]+)\1/specificstring\1/p' file
要点
-n
抑制我们使用p
命令的print(s
)标志覆盖的输出。-E
启用扩展的正则表达式。注意 但是,这不会在没有相同组的行中打印出来,而在问题中没有提到存在相同组的行。
答案 2 :(得分:1)
鉴于该文件仅包含6位数字,并且不能像这样进行其他操作:
<ul>