Количество экземпляров char в текстовом файле

Есть ли какой-либо путь под linux/terminal для подсчета, сколько раз char f встречается в текстовом файле?

Ответ 1

Как насчет этого:

fgrep -o f <file> | wc -l

Примечание. Кроме того, гораздо легче запомнить/дублировать и настроить, это примерно три раза (извините, отредактируйте! botched the first test) быстрее, чем ответ Vereb.

Ответ 2

еще быстрее:

tr -cd f < file | wc -c

Время для этой команды с файлом с 4.9 МБ и 1100000 вхождения искомого символа:

real   0m0.089s
user   0m0.057s
sys    0m0.027s

Время для ответа Vereb с echo, cat, tr и bc для одного и того же файла:

real   0m0.168s
user   0m0.059s
sys    0m0.115s

Время для Роб Хруски отвечает с помощью tr, sed и wc для того же файла:

real   0m0.465s
user   0m0.411s
sys    0m0.080s

Время ответа Jefromi с fgrep и wc для одного и того же файла:

real   0m0.522s
user   0m0.477s
sys    0m0.023s 

Ответ 3

echo $(cat <file>  | wc -c) - $(cat <file>  | tr -d 'A' | wc -c) | bc

где A - символ

Время для этой команды с файлом с 4.9 МБ и 1100000 вхождения искомого символа:

real   0m0.168s
user   0m0.059s
sys    0m0.115s

Ответ 4

Если вам нужно всего лишь подсчитать количество строк, содержащих ваш персонаж, это будет работать:

grep -c 'f' myfile

Однако он подсчитывает несколько вхождений "f" в одной строке с единственным совпадением.

Ответ 5

tr -d '\n' < file | sed 's/A/A\n/g' | wc -l

Замена двух вхождений "A" на ваш персонаж и "файл" с вашим входным файлом.

  • tr -d '\n' < file: удаляет символы новой строки
  • sed 's/A/A\n/g: добавляет новую строку после каждого появления "A"
  • wc -l: подсчитывает количество строк

Пример:

$ cat file
abcdefgabcdefgababababbbba


1234gabca

$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9