sed用捕获组替换行

时间:2016-12-16 08:44:48

标签: sed

是否可以使用sed从正则表达式替换具有捕获组的行?

我有这个正则表达式,请注意这是固定的,我无法改变它。

simple sample(.*)

这就是我想要的:

This is just a simple sample line with some text

更改为:

line with some text

我需要这样的东西:

sed '/simple sample \(.*\)/c \1'

现在输出:

1

有人知道你是否可以在sed中使用更改行功能的捕获组?

2 个答案:

答案 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 }'