尝试在sed中使用引用时出错

时间:2014-06-09 08:02:59

标签: regex bash sed

我试图用sed替换中间行,并在所述行之后添加一个新行,其中包含匹配行中的一些内容。但我这样做的方式不起作用。

sed '/The \(matching\) line/{s/line/lines/;s/$/\nThe new \1 line/}'

这会在`s'上返回"无效的引用\ 1命令的RHS"。如何从匹配的行中获取可用于替换匹配的引用?

编辑:我想要的结果是:

输入:

The matching line

输出:

The matching lines
The new matching line

2 个答案:

答案 0 :(得分:1)

在评论中隐藏我的答案。

sed 's/The \(.*\) line/The \1 lines\nThe new \1 line/'

答案 1 :(得分:0)

假设您的系统支持扩展正则表达式:

echo 'The matching lines' | sed -re 's/The\s+(.*)\s+line/The \1 lines\nThe new \1 line/'
The matching lines
The new matching lines