Tenho um arquivo no formato abaixo:
Name=Dan
Age=45
Name=Alex
Age=35
Cellphone=12345678901
Name=John
Age=
Cellphone=12345678901
Este arquivo tem milhares de itens de dados no formato acima, Name=Value
.
Se os valores estiverem ausentes e eu quiser encontrá-los na saída abaixo como valor ausente para Idade.
Eu tentei usar o comando cut, cut -d “=“ -f2 > some file
, então grep para uma linha vazia, grep -n ‘[[:blank:]]’ file
, então exiba o número da linha no arquivo original.
Mas como tenho vários arquivos, esse método parece complicado.
Existe algum método mais simples para isso?
Você pode tentar usar isso:
Isso substituirá seus espaços por novas linhas (o que não funcionará se você tiver valores contendo espaços) e, em seguida, procurará entradas com = seguido de fim de linha.
Se você tratar seu arquivo como delimitado , poderá corresponder e produzir qualquer linha cujo segundo campo consista no máximo em espaços em branco:
Usando
grep
com regexp estendido:grep -Eno "[A-Za-z]+=( |$)" /path/to/file
Deve imprimir chaves vazias e números de linha correspondentes.