com pcregrep
:
$ pcregrep --om-separator=, -o -o1 -o2 '^(b).*|.*(c)$' sample.txt
bc,b
ac,c
Digamos que eu tenha um arquivo chamado sample.txt que contém
ab
bc
ac
grep -E "^b|c$" sample.txt
me dá saída como
bc
ac
Agora quero que a cadeia de filtros seja adicionada à saída. Eu quero a saída como
bc,b
ac,c
Como posso conseguir isso?
com pcregrep
:
$ pcregrep --om-separator=, -o -o1 -o2 '^(b).*|.*(c)$' sample.txt
bc,b
ac,c
perl solução alternativa:
perl -nle 'print "$_,$&" if /^b|c$/' sample.txt
A saída:
bc,b
ac,c
$_
- refere-se à string com a qual a expressão regular está correspondendo em
$&
- retorna toda a subcadeia de correspondência
Com script Perl externo:
my.pl :
#!/usr/bin/perl
use strict;
use warnings;
while (<>) {
chomp $_;
print "$_,$&\n" if /(^b|c$)/;
}
Uso :
perl my.pl sample.txt
Tags grep