# cut -d \| -f 6 test.txt | grep -v -E .\+ -n
grep
-v invert match
-E .\+ match any 1+ character
-n output line numbers
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?
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}'
^
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 .