cat *.c | { printf "se te du\nplot '-' t '' w dots\n"; tr '[[:upper:]]' '[[:lower:]]' | tr -s [[:punct:][:space:]] '\n' | sort | uniq -c | sort -nr | head -n 100 | awk '{print $1}END{print "e"}'; } | gnuplot
Эта команда выполняет следующие действия:
1. С помощью cat
объединяет содержимое всех файлов с расширением .c
.
2. Передает объединенный текст в следующую команду в виде потока данных.
3. Внутри фигурных скобок выполняет последовательность команд:
— printf
выводит шаблон строки для gnuplot, настройку отображения графика.
— tr
переводит все заглавные буквы в строчные и заменяет пунктуацию и пробелы на новую строку.
— sort
сортирует слова в алфавитном порядке.
— uniq -c
подсчитывает число повторений каждого слова.
— sort -nr
сортирует результаты в обратном порядке по частоте.
— head -n 100
оставляет только первые 100 строк.
— awk
выводит только первый столбец (частоту) и слово «e» в конце.
4. Перенаправляет результаты в программу gnuplot для построения графика.
Эта команда полезна для создания частотного распределения слов в текстовых файлах и отображения его в виде графика с помощью gnuplot. Альтернативой может быть использование других инструментов для анализа и визуализации данных, таких как Python с библиотеками Pandas и Matplotlib. Аргументы, передаваемые команде, — это файлы с расширением .c
.