# 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 .