Поиск по сайту:

Развлечения в терминале 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