假设我有一个名为 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