Если две строки в файле имеют нечетное число двойных кавычек, общая сумма двойных кавычек будет четной, и вы не обнаружите несбалансированные кавычки (это то, что я предполагаю, что вы на самом деле хотели бы сделать, но я могу ошибаться ).
Этот 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" для этого файла.