Como usar o awk para imprimir apenas linhas contendo 5 colunas

5

Eu tenho um arquivo que contém dados delimitados por pipe. Eu quero imprimir as linhas que possuem apenas 5 colunas. Eu tentei o abaixo. Não funciona. Ele simplesmente imprime todas as linhas. Você poderia por favor me avisar como fazer isso corretamente? Obrigada!

Conteúdo do arquivo:

10413300|Maintenance Stock Clerk A - Michelle Hanley | Michelle Hanley (1680654)|Filled||10402112
10413301|Maintenance Stock Clerk - dasda|space||10402122
MOM Parkcentrum F;Alkotás u. 53.||34535|34345|asd
Business Center Naberezhnaya Tower" Block C"|||3453|ffg|345

Aqui estou tentando imprimir linhas com apenas 5 colunas.

$ gawk -F "|" '{ if (NF=5) print $0 }' data3
10413300 Maintenance Stock Clerk A - Michelle Hanley   Michelle Hanley (1680654) Filled
10413301 Maintenance Stock Clerk - dasda space  10402122
MOM Parkcentrum F;Alkotás u. 53.  34535 34345 asd
Business Center Naberezhnaya Tower Block C   3453 ffg

A saída mostra que 2 de 4 linhas têm mais de 5 colunas.

$ gawk -F "|" '{print NF}' data3
6
5
5
6
    
por user6613676 31.01.2017 / 11:43

1 resposta

14

NF=5 é uma atribuição, os valores de teste são feitos com == . Assim:

awk -F \| 'NF==5' data3
    
por 31.01.2017 / 11:45