是否可以使用sed从正则表达式替换具有捕获组的行?
我有这个正则表达式,请注意这是固定的,我无法改变它。
simple sample(.*)
这就是我想要的:
This is just a simple sample line with some text
更改为:
line with some text
我需要这样的东西:
sed '/simple sample \(.*\)/c \1'
现在输出:
1
有人知道你是否可以在sed中使用更改行功能的捕获组?
答案 0 :(得分:4)
喜欢这个吗?
echo "This is just a simple sample line with some text" | \
sed 's/simple sample \(.*\)/\n\1/;s/.*\n//'
这个想法很简单:用换行符替换整个正则表达式匹配与前面的 组。然后将所有内容替换为第一个换行符,包括第一个换行符。当然,您可以使用换行符以外的标记。
答案 1 :(得分:0)
Perl救援!
perl -ne 'if (/(.*)simple sample (.*) with (.*)/) {
print "$1$2\n";
} else { print }'