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 awk
script 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.