Wyszukiwanie w witrynie

Zabawa w terminalu Linux — baw się liczeniem słów i znaków


Linia poleceń Linuksa ma mnóstwo zabawy i wiele żmudnych zadań można wykonać bardzo łatwo, a jednocześnie perfekcyjnie. W tym artykule omówimy zabawę słowami i znakami, ich częstotliwością w pliku tekstowym itp.

Jedynym poleceniem, które przychodzi nam na myśl, aby ulepszyć wiersz poleceń Linuksa w celu manipulowania słowami i znakami z pliku tekstowego, jest polecenie wc.

Polecenie „wc”, które oznacza liczbę słów, umożliwia wydrukowanie liczby znaków nowej linii, słów i bajtów z pliku tekstowego.

Aby pracować z małymi skryptami i analizować plik tekstowy, musimy mieć plik tekstowy. Aby zachować jednolitość, tworzymy plik tekstowy z wynikami polecenia man, jak opisano poniżej.

man man > man.txt

Powyższe polecenie tworzy plik tekstowy „man.txt” z zawartością „strony podręcznika” dla polecenia „man”.

Chcemy sprawdzić najpopularniejsze słowa w utworzonym powyżej „pliku tekstowym”, uruchamiając poniższy skrypt.

cat man.txt | tr ' '  '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Przykładowe wyjście
7557 
262 the 
163 to 
112 is 
112 a 
78 of 
78 manual 
76 and 
64 if 
63 be

Powyższy prosty skrypt liniowy pokazuje dziesięć najczęściej występujących słów i częstotliwość ich występowania w pliku tekstowym.

Co powiesz na podzielenie słowa na pojedyncze osoby za pomocą następującego polecenia.

echo 'tecmint team' | fold -w1
Przykładowe wyjście
t 
e 
c 
m 
i 
n 
t 
t 
e 
a 
m

Uwaga: tutaj „-w1” oznacza szerokość.

Teraz podzielimy każde słowo w pliku tekstowym, posortujemy wynik i uzyskamy żądany wynik z częstotliwością dziesięciu najczęściej występujących znaków.

fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Przykładowe wyjście
8579  
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l

A co powiesz na to, aby najczęstsze znaki w pliku tekstowym różniły się wielkimi i małymi literami oraz częstotliwością ich występowania?

fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Przykładowe wyjście
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 .

Sprawdź powyższe dane wyjściowe, w których uwzględniono znak interpunkcyjny. Usuńmy znaki interpunkcyjne za pomocą polecenia „tr”. No to ruszamy:

fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Przykładowe wyjście
  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

Teraz mam trzy pliki tekstowe, uruchommy powyższy skrypt liniowy, aby zobaczyć wynik.

cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Przykładowe wyjście
  11636  
   2504 E 
   2079 A 
   2005 T 
   1729 I 
   1645 N 
   1632 S 
   1580 O

Następnie będziemy generować te rzadkie litery, które mają co najmniej dziesięć liter. Oto prosty skrypt.

cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n |  grep -E '..................' | head
Przykładowe wyjście
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

Uwaga: Im więcej kropek w powyższym skrypcie, aż do wygenerowania wszystkich wyników. Możemy użyć .{10}, aby uzyskać dziesięć dopasowań znaków.

Te proste skrypty pozwalają nam także poznać najczęściej występujące słowa i znaki w języku angielskim.

To wszystko na teraz. Będę tu ponownie z kolejnym ciekawym i nietypowym tematem, o którym warto wiedzieć, a który z pewnością z chęcią przeczytacie. Nie zapomnij podzielić się z nami swoją cenną opinią w sekcji komentarzy poniżej.

Przeczytaj także: 20 zabawnych poleceń systemu Linux