Jika dua baris dalam file memiliki jumlah tanda kutip ganda ganjil, jumlah total tanda kutip ganda akan genap, dan Anda tidak akan mendeteksi tanda kutip tidak seimbang (ini yang saya anggap ingin Anda lakukan, tapi saya mungkin salah ).
awkSkrip ini melaporkan setiap baris di baris input yang memiliki jumlah penawaran ganjil:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Kami mengatur pemisah lapangan ( FS) untuk "dengan -F'"'yang berarti bahwa jika garis memiliki jumlah yang lebih dari bidang memiliki tanda kutip aneh. NFadalah jumlah bidang dalam catatan terkini, dan NRmerupakan nomor urut dari catatan saat ini ("nomor baris").
Diberikan input berikut:
$ 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"
kita mendapatkan
$ 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"
Sesuatu seperti
$ grep -o '"' | wc -l
akan mengembalikan "14" untuk file ini.