Чи є під Linux / термінал спосіб підрахувати, скільки разів знак char f виникає у простому текстовому файлі?
Чи є під Linux / термінал спосіб підрахувати, скільки разів знак char f виникає у простому текстовому файлі?
Відповіді:
Як щодо цього:
fgrep -o f <file> | wc -l
Примітка: Крім того, що запам'ятовувати / дублювати та налаштовувати набагато простіше, це приблизно втричі (вибачте, редагуйте! Пройшов перший тест) швидше, ніж відповідь Вереба.
\rчи \nсимволів; tr -cd fвідповідь робить роботу для цього.
a, bі cвикористовуйте egrep: egrep -o 'a|b|c' <file> | wc -l.
wc -cяк у trвідповіді: оскільки grepвиводи рядка за рядком, wcкінцеві рядки будуть зараховані як символи (отже, подвоєння кількості символів).
\r, але порахувати, \nчому б не просто використовувати wc -l?
ще швидше:
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
Час для Rob Hruška відповіді з tr, sedі wcдля того ж файлу:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
Час для відповіді Jefromi з fgrepі wcдля того ж файлу:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
a, bі c: tr -cd abc < file | wc -l.
tr -cd abc < file | wc -cзамість цього
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
де А - символ
Час виконання цієї команди з файлом з 4,9 Мб і 1100000 випадків пошуку символу:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
cats, надавши ім'я файлу як аргумент wcта і tr.
stdin, але це може бути записано , а не cated:tr -d 'A' < <file> | wc ...
Якщо все, що вам потрібно зробити, - це підрахувати кількість рядків, що містять вашого персонажа, це спрацює:
grep -c 'f' myfile
Однак він підраховує кілька випадків 'f' в одному рядку, як і одна відповідність.
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
Заміна двох входжень "A" вашим персонажем, а "file" вашим вхідним файлом.
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