我试图用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
答案 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