У меня была команда, которая работала бы с текстовым файлом, подсчитывала все вхождения слов и распечатывала их так:
user@box $˜ magic-command-i-forgot | with grep | and awk | sort ./textfile.txt
66: the
54: and
32: I
16: unix
12: bash
5: internet
3: sh
1: GNU/Linux
Таким образом, он ищет не построчно, а слово за словом, и делает это для всех слов, а не только для одного слова. Я нашел это где-то в интернете давно, но я не могу найти или запомнить это ..
tr -s
для обработки нескольких пробелов, особенно при возникновении отступов.-g
(--general-numeric-sort
) опцияsort
может быть предпочтительнее в некоторых случаях. Например,sort -n
будет сохранять,10\n1 4
как есть, лечить1 4
как14
, покаsort -g
будет правильно относиться к нему как1 4\n10
.echo "Lorem ipsum dolor sit sit amet et cetera." | tr ' ' '\n' | grep -v "^$" | sort | uniq -c | sort -bnr
Обратите внимание, что я новичок, поэтому я могу ошибаться, пожалуйста, не стесняйтесь советовать.Чтобы разбить ввод на слова, замените любой символ, который вы считаете разделителем слов, новой строкой.
источник
Не используя grep и awk, но, похоже, это делает то, что вы хотите:
источник
set -f
) и обрабатывают пунктуацию как часть слов (что может быть неловко исправлено путем добавления символов пунктуации вIFS
- удачи в попытках поддержать наборы символов не-ASCII). Это не будет хорошо с очень большими входными файлами, поскольку он хранит весь файл в памяти (sort
умнее).Я полагаю, вы после чего-то вроде этого?
конечно, вы можете сделать то же самое с
awk
:)источник
Используя
awk/sort/uniq
решение:источник
сортирует по возрастанию после разбиения файла на слова.
Простой Grep найдет
fish
вfisheye
, так что вы должны усилить команду Grep , чтобы предотвратить частичные совпадения.Требуется около 3 с для текстового файла 25 КБ на компьютере в возрасте, классический HDD (IDE).
Для больших файлов или часто выполняемых операций лучше использовать подход с использованием карты хеша, но для редко запускаемого задания или только для небольших файлов этого может быть достаточно.
источник