acrescenta o texto correspondente à linha

3

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?

    
por Thomas 24.06.2017 / 17:33

2 respostas

2

com pcregrep :

$ pcregrep --om-separator=, -o -o1 -o2 '^(b).*|.*(c)$' sample.txt
bc,b
ac,c
    
por 24.06.2017 / 18:42
2

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
    
por 24.06.2017 / 18:27

Tags