campo de impressão que contém um determinado valor

0

é possível imprimir o campo que contém um determinado valor?

Considere o arquivo abaixo:

foo,boo,123,1234312,ABC
foo,boo,ABC,bla,bla

Existe um campo que contém ABC , mas não é fixo com todos os registros, portanto, o comando precisa imprimir $5 no primeiro registro e $3 no segundo.

    
por Eng7 03.10.2015 / 14:00

2 respostas

3

Sim, assim como na sua pergunta anterior , mas corresponde a cada campo:

$ awk -F, '{for(i=1;i<=NF;i++){if($i~/ABC/){print $i}}}' file
ABC
ABC

Observe que o acima também imprimirá um campo que contém ABC , como fooABC ou fooABCbar ou o que for. Para imprimir apenas os campos que são ABC , use:

awk -F, '{for(i=1;i<=NF;i++){if($i=="ABC"){print $i}}}' file

A mesma coisa, em Perl:

perl -F, -lane 'print grep{/ABC/}@F' file     ## field matches
perl -F, -lane 'print grep{$_=="ABC"}@F' file ## field is
    
por 03.10.2015 / 14:09
2

Você pode usar grep com PCRE (Perl Compatible RegEx):

grep -Po '(?<=^|,)ABC(?=,|$)' file.txt
    
por 03.10.2015 / 14:20