Wenn zwei Zeilen in der Datei eine ungerade Anzahl von doppelten Anführungszeichen enthalten, ist die Gesamtsumme der doppelten Anführungszeichen gerade und Sie erkennen keine unausgeglichenen Anführungszeichen (dies ist das, was Sie vermutlich tatsächlich tun möchten, aber ich könnte mich irren ).
Dieses awk
Skript meldet jede Zeile in der Eingabezeile, die eine ungerade Anzahl von Anführungszeichen enthält:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Wir setzten die Feldtrennzeichen ( FS
) , um "
mit -F'"'
was bedeutet , dass , wenn eine Linie eine gerade Anzahl von Feldern hat sie ungeradee Anführungszeichen hat. NF
ist die Anzahl der Felder im letzten Datensatz und NR
die Ordnungszahl des aktuellen Datensatzes ("die Zeilennummer").
Angesichts der folgenden Eingabe:
$ 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"
wir bekommen
$ 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"
Etwas wie
$ grep -o '"' | wc -l
würde "14" für diese Datei zurückgeben.