Например, мы хотим сосчитать все "
символы quote ( ); мы просто беспокоимся, если в файлах больше кавычек, чем должно быть.
Например:
cluster-env,"manage_dirs_on_root","true"
cluster-env,"one_dir_per_partition","false"
cluster-env,"override_uid","true"
cluster-env,"recovery_enabled","false"
Ожидаемые результаты:
16
text-processing
Яэль
источник
источник
Ответы:
Вы можете комбинировать
tr
(переводить или удалять символы) сwc
(считать слова, строки, символы):(
-d
Укажите все символы в поле «c
Пропустить»"
, а затем подсчитайте количествоc
характеров.)источник
подход grep :
-o
- выводить только совпадающие подстрокиИли с одним глазком :
RS=''
- пустой разделитель записей (вместо новой строки)FPAT='"'
- шаблон, определяющий значение поляисточник
-o
является нестандартным расширением GNU для стандартнойgrep
утилиты. Это не упоминается в документации POSIX дляgrep
.Если две строки в файле имеют нечетное число двойных кавычек, общая сумма двойных кавычек будет четной, и вы не обнаружите несбалансированные кавычки (это то, что я предполагаю, что вы на самом деле хотели бы сделать, но я могу ошибаться ).
Этот
awk
скрипт сообщает о любой строке во входной строке, которая содержит нечетное количество кавычек:Мы задаем разделитель полей (
FS
) к"
с ,-F'"'
что означает , что если линия имеет четное число полой она имеет нечетные кавычки.NF
количество полей в последней записи иNR
порядковый номер текущей записи («номер строки»).Учитывая следующий вход:
мы получаем
Что-то вроде
вернет "14" для этого файла.
источник
Еще один
gawk
подход:источник
Чистый BASH:
источник
tmp
массив? Если да,tmp
это массив чего?tmp
в этом фрагменте находится обычная переменная оболочки. И я не одобряю этот ответ, потому что он подсчитывает, сколько раз символ появляется в переменной (var
), а не в файле, как указано в вопросе.пытаться:
однако, это не будет работать, если два или более символа в одной строке. Они будут считаться одним символом
источник
grep -oF '"' file | wc -l
-F обозначает фиксированную строку
источник
-F
флаг, который здесь не нужен.Эксцентричный двойной метод GNU
grep
:источник