Nếu hai dòng trong tệp có số lượng dấu ngoặc kép lẻ, tổng số dấu ngoặc kép sẽ là số chẵn và bạn sẽ không phát hiện dấu ngoặc kép không cân bằng (đây là điều tôi cho là bạn thực sự muốn làm, nhưng tôi có thể sai ).
awk
Kịch bản lệnh này báo cáo bất kỳ dòng nào trong dòng đầu vào có số lượng trích dẫn lẻ:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Chúng tôi đặt dấu tách trường ( FS
) thành "
có -F'"'
nghĩa là nếu một dòng có số trường chẵn thì nó có dấu ngoặc kép. NF
là số trường trong bản ghi gần đây và NR
là số thứ tự của bản ghi hiện tại ("số dòng").
Cho đầu vào sau:
$ 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"
chúng tôi nhận được
$ 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"
Cái gì đó như
$ grep -o '"' | wc -l
sẽ trả về "14" cho tập tin này.