Есть ли какой-либо путь под linux/terminal для подсчета, сколько раз char f встречается в текстовом файле?
Количество экземпляров char в текстовом файле
Ответ 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