Dado este arquivo como input
:
key1=value1
key2=value2
key3=
=value3
key4=value4
Podemos usar =
como um separador de campo para awk
:
$ awk -F= '!($1 && $2 && NF==2) { print "File failed validation on line " NR; exit 1} { print $1, $2 }' input
key1 value1
key2 value2
File failed validation on line 3
Para lançar mensagens de erro de validação ao erro padrão, a instrução print
pode ser modificada e, para continuar processando após a exibição de um erro, altere a instrução exit
para uma instrução next
:
$ awk -F= '!($1 && $2 && NF==2) { print "File failed validation on line " NR | "cat 1>&2"; next } { print $1, $2 }' input
[stdout] key1 value1
[stdout] key2 value2
[stdout] key4 value4
[stderr] File failed validation on line 3
[stderr] File failed validation on line 4
A validação é feita em três etapas; Se algum desses critérios não for atendido, o erro será lançado e, no primeiro exemplo, a execução será cancelada com um código de saída de estado de erro:
-
$1
- Certifique-se de que existe (na linguagem da especificação de entrada) uma "chave"
-
$2
- Certifique-se de que existe (na linguagem da especificação de entrada) um "valor"
-
NF==2
- Assegure-se de que existam apenas dois campos; a "chave" e "valor" acima mencionados