将匹配的文本附加到该行

将匹配的文本附加到该行

假设我有一个名为 Sample.txt 的文件,其中包含

ab
bc
ac

grep -E "^b|c$" sample.txt给我输出为

bc
ac

现在我希望将过滤器字符串添加到输出中。我想要的输出为

bc,b
ac,c

我怎样才能做到这一点?

答案1

pcregrep

$ pcregrep --om-separator=, -o -o1 -o2 '^(b).*|.*(c)$' sample.txt
bc,b
ac,c

答案2

珀尔替代解决方案:

perl -nle 'print "$_,$&" if /^b|c$/' sample.txt

输出:

bc,b
ac,c

  • $_- 指正则表达式匹配的字符串

  • $&- 返回整个匹配的子字符串


与外部珀尔脚本:

my.pl

#!/usr/bin/perl
use strict;
use warnings;

while (<>) {
    chomp $_;
    print "$_,$&\n" if /(^b|c$)/;
}

用法

perl my.pl sample.txt

相关内容