Se due righe nel file hanno un numero dispari di virgolette doppie, la somma totale delle virgolette doppie sarà pari e non rileverai virgolette sbilanciate (questo è quello che presumo tu voglia effettivamente fare, ma potrei sbagliarmi ).
Questo awkscript riporta qualsiasi riga nella riga di input che ha un numero dispari di virgolette:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Impostiamo il separatore di campo ( FS) "con il -F'"'quale significa che se una riga ha un numero pari di campi ha virgolette dispari. NFè il numero di campi nel record recente ed NRè il numero ordinale del record corrente ("il numero di riga").
Dato il seguente input:
$ 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"
noi abbiamo
$ 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"
Qualcosa di simile a
$ grep -o '"' | wc -l
restituirebbe "14" per questo file.