Якщо у двох рядках у файлі є непарна кількість подвійних лапок, загальна сума подвійних лапок буде парною, і ви не виявите незбалансованих лапок (саме це я вважаю, що ви хотіли б насправді зробити, але я можу помилятися ).
Цей awkскрипт повідомляє про будь-який рядок у рядку введення, що має непарну кількість лапок:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
Ми задаємо роздільник полів ( FS) до "с , -F'"'що означає , що якщо лінія має парне число порожнистої вона має непарні лапки. NF- кількість полів у недавньому записі та NRпорядковий номер поточного запису ("номер рядка").
З огляду на наступний вхід:
$ 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"
ми отримуємо
$ 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"
Щось на зразок
$ grep -o '"' | wc -l
поверне "14" для цього файлу.