Развлечения в терминале Linux — играйте со словами и количеством символов
Командная строка Linux сама по себе очень интересна, и многие утомительные задачи можно выполнить очень легко, но при этом с совершенством. Игра со словами и символами, их частотой в текстовом файле и т. д. — это то, что мы увидим в этой статье.
Единственная команда, которая приходит нам на ум для настройки командной строки Linux для управления словами и символами из текстового файла, — это команда wc.
Команда «wc», обозначающая количество слов, способна печатать значения новой строки, слов и байтов из текстового файла.
Для работы с небольшими скриптами для анализа текстового файла нам необходим текстовый файл. Чтобы сохранить единообразие, мы создаем текстовый файл с выводом команды man, как описано ниже.
man man > man.txt
Приведенная выше команда создает текстовый файл «man.txt» с содержимым «страницы руководства» для команды «man».
Мы хотим проверить наиболее распространенные слова в созданном выше «Текстовом файле», запустив приведенный ниже скрипт.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Пример вывода
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Приведенный выше простой однострочный сценарий показывает десять наиболее часто встречающихся слов и частоту их появления в текстовом файле.
Как насчет того, чтобы разбить слово на отдельные слова, используя следующую команду.
echo 'tecmint team' | fold -w1
Пример вывода
t
e
c
m
i
n
t
t
e
a
m
Примечание. Здесь «-w1» означает ширину.
Теперь мы разберем каждое слово в текстовом файле, отсортируем результат и получим желаемый результат с частотой десяти наиболее часто встречающихся символов.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Пример вывода
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Как насчет того, чтобы получить наиболее часто встречающиеся символы в текстовом файле в верхнем и нижнем регистре по-разному, а также частоту их появления.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Пример вывода
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 o
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
344 .
Проверьте приведенный выше вывод, в котором присутствует знак препинания. Давайте удалим пунктуацию с помощью команды «tr». Вот так:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Пример вывода
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
1550
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
Теперь у меня есть три текстовых файла, давайте запустим приведенный выше однострочный скрипт, чтобы увидеть результат.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Пример вывода
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Далее мы будем генерировать те редкие буквы длиной не менее десяти букв. Вот простой сценарий.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Пример вывода
1 ──────────────────────────────────────────
1 a all
1 abc any or all arguments within are optional
1 able see setlocale for precise details
1 ab options delimited by cannot be used together
1 achieved by using the less environment variable
1 a child process returned a nonzero exit status
1 act as if this option was supplied using the name as a filename
1 activate local mode format and display local manual files
1 acute accent
Примечание. Чем больше и больше точек в приведенном выше сценарии, пока не будут сгенерированы все результаты. Мы можем использовать .{10}, чтобы получить десять совпадений символов.
Эти простые сценарии также помогают нам узнать наиболее часто встречающиеся слова и символы английского языка.
Это все на данный момент. Я снова буду здесь с еще одной интересной и необычной темой, которую стоит знать, и которую вы, люди, с удовольствием прочтете. Не забудьте оставить нам свой ценный отзыв в разделе комментариев ниже.
Читайте также: 20 забавных команд Linux