Se duas linhas no arquivo tiverem um número ímpar de aspas duplas, a soma total de aspas duplas será par, e você não detectará aspas desequilibradas (isto é o que eu presumo que você gostaria de fazer, mas eu pode estar errado).
Este script awk
informa qualquer linha na linha de entrada que tenha um número ímpar de aspas:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Definimos o separador de campo ( FS
) como "
com -F'"'
, o que significa que, se uma linha tiver um número par de campos, ela terá aspas ímpares. NF
é o número de campos no registro recente e NR
é o número ordinal do registro atual ("o número da linha").
Dada a seguinte entrada:
$ cat file
cluster-env,"manage_dirs_on_root","true"
cluster-env,"one_dir_per_partition","false"
cluster-env,override_uid","true"
cluster-env,recovery_enabled","false"
nós recebemos
$ awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }' file
Line 3 has odd quoting: cluster-env,override_uid","true"
Line 4 has odd quoting: cluster-env,recovery_enabled","false"
Algo como
$ grep -o '"' | wc -l
retornaria "14" para este arquivo.