Obter números de linha para linhas com campos vazios

1

Eu tenho um arquivo grande delimitado por canos onde preciso encontrar o número da linha de todas as linhas em que um determinado campo está vazio.

Eu posso usar cut -d \| -f 6 filename.txt para produzir apenas essa coluna.

O que é um utilitário / ferramenta / comando que eu possa usar para encontrar quais linhas de saída das anteriores estão vazias?

    
por David Oneill 15.06.2011 / 16:32

3 respostas

5
# cut -d \| -f 6 test.txt | grep -v -E .\+ -n

grep 
    -v invert match
    -E .\+ match any 1+ character
    -n output line numbers
    
por 15.06.2011 / 16:51
4

Você pode combinar cut e grep como outras pessoas mostraram, ou você pode usar o filtro de texto para todas as finalidades awk .

awk -F'|' '$6 == "" {print NR}'
    
por 15.06.2011 / 19:28
1

^ em uma expressão regular corresponde ao início da linha e $ ao final, portanto, ^$ corresponde a linhas vazias. grep recebe um argumento -n que gera os números de linhas correspondentes, em vez das próprias linhas, portanto:

$ grep -n '^$'

Você também pode usar -v para inverter a correspondência e contar as linhas não correspondentes. Nesse caso, você deseja corresponder as linhas com pelo menos um caractere (onde . corresponde a qualquer caractere):

$ grep -n -v .
    
por 15.06.2011 / 16:49