Получите количество встречаемости слова текстового файла всех слов и распечатайте отсортированный вывод

Можно загрузить шрифты (т.е. файлы TTF) затем вставляет их ~/.fonts (для персонального использования) или /usr/share/fonts (для всех). После этого X должен забрать список шрифтов и сделать это доступным для всех приложений (Вам, вероятно, придется выйти из системы и войти в первом).

29
10.06.2019, 18:28
6 ответов

Я использовал бы tr вместо awk:

echo "Lorem ipsum dolor sit sit amet et cetera." | tr '[:space:]' '[\n*]' | grep -v "^\s*$" | sort | uniq -c | sort -bnr
  • tr просто замены располагают с интервалами с новыми строками
  • grep -v "^\s*$" обрезки пустые строки
  • sort подготовиться, как введено к uniq
  • uniq -c считать случаи
  • sort -bnr виды в числовом обратном порядке при игнорировании пробела

ничего себе. это оказалось большой командой для подсчета, клянутся на строки

найти. - имя "*.py" - исполнительная кошка {} \; | TR' [: пространство:]'' [\n*]' | grep-v "^\\s* $" | вид | uniq-c | вид-bnr | grep трахаются

34
27.01.2020, 19:38
  • 1
    Мог бы хотеть использовать tr -s обработать несколько пробелов, особенно при обнаружении с добавлением отступа. –  Arcege 21.05.2012, 03:02
  • 2
    @Arcege: Положительная сторона. Хотя это изменение привычки результат это может закрепить сценарий немного. –  seler 21.05.2012, 10:10
  • 3
    -g (--general-numeric-sort) опция sort может быть предпочтительным в некоторых случаях. Например. sort -n сохранит 10\n1 4 как, рассматривая 1 4 как 14, в то время как sort -g будет рассматривать его правильно как 1 4\n10. удача –  Skippy le Grand Gourou 06.09.2015, 15:04
  • 4
    хорошая команда, действительно заслужите голосования :) –  Noor 04.11.2015, 15:07
  • 5
    хорошая команда, действительно заслужите голосования :) –  Noor 04.11.2015, 15:07
  1. Разделите вход на слова, один на строку.
  2. Отсортируйте получающийся список слов (строки).
  3. Раздавите несколько происшествий.
  4. Вид количеством возникновения.

Для разделения входа на слова замените любой символ, который Вы считаете, чтобы быть разделителем слов новой строкой.

<input_file \
tr -sc '[:alpha:]' '[\n*]' | # Add digits, -, ', ... if you consider
                             # them word constituents
sort |
uniq -c |
sort -nr
8
27.01.2020, 19:38
  • 1
    Это - хороший ответ, потому что он может обработать случай, где слова непосредственно рядом с некоторой пунктуацией неслова, которую Вы хотите проигнорировать. –  David Grayson 27.03.2017, 21:09

Не используя grep и awk, но это, кажется, делает то, что Вы хотите:

for w in `cat maxwell.txt`; do echo $w; done|sort|uniq -c
  2 a
  1 A
  1 an
  1 command
  1 considered
  1 domain-specific
  1 for
  1 interpreter,
  2 is
  1 language.
  1 line
  1 of
5
27.01.2020, 19:38
  • 1
    Это не будет работать, если вход будет содержать подстановочные знаки оболочки (необходимо добавить set -f), и пунктуация обработок как часть слов (который может быть зафиксирован неловко путем добавления знаков пунктуации к IFS — удача, пытающаяся поддерживать наборы символов неASCII). Это не будет хорошо с очень большими входными файлами, поскольку это хранит целый файл в памяти (sort более умно). –  Gilles 'SO- stop being evil' 21.05.2012, 03:21

Я полагаю, что Вы после чего-то вроде этого?

$ perl -n -e 'foreach ${k} (split(/\s+/)){++$h{$k}};END{foreach $l (keys(%h)){print "$h{$l}: ${l}\n"}}' /path/to/your/file | sort -n -k 1

конечно, можно сделать то же с awk также :)

2
27.01.2020, 19:38

Используя awk/sort/uniq решение:

awk '{for(w=1;w<=NF;w++) print $w}' ~/textFile.txt | sort | uniq -c | sort -nr
2
27.01.2020, 19:38
file=/home/stefan/ooxml1.txt
for word in $(sed 's/[^A-Za-z]/ /g' $file | tr " " "\n" | sort -u)
do
  echo -n "$word "
  grep -c $word $file
done | sort -k2 -n 

виды, возрастающие после разделения файла в слова.

Простой grep найдет fish в fisheye, таким образом, необходимо улучшить команду grep для предотвращения частичных соответствий.

Занимает приблизительно 3 с для 25k текстового файла на машине в возрастах, классический жесткий диск (IDE).

Для больших файлов или часто выполняемых операций подход карты хеша был бы лучше, но для редко выполняемого задания или меньших файлов только, это могло бы быть достаточно.

0
27.01.2020, 19:38

Теги

Похожие вопросы