Si dos líneas en el archivo tienen un número impar de comillas dobles, la suma total de comillas dobles será par y no detectará comillas desequilibradas (esto es lo que supongo que le gustaría hacer, pero podría estar equivocado )
Este awk
script informa cualquier línea en la línea de entrada que tenga un número impar de comillas:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Establecemos el separador de campo ( FS
) "
con lo -F'"'
que significa que si una línea tiene un número par de campos, tiene comillas impares. NF
es el número de campos en el registro reciente y NR
es el número ordinal del registro actual ("el número de línea").
Dada la siguiente 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"
obtenemos
$ 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
devolvería "14" para este archivo.