Lõbus Linuxi terminalis - mängige sõna- ja märgilugudega


Linuxi käsureal on enda ümber palju nalja ja paljude tüütute ülesannete täitmine on väga lihtne, kuid siiski täiuslik. Selles artiklis näeme sõnade ja tähemärkidega mängimist, nende sagedust tekstifailis jne.

Ainus käsk, mis meile pähe tuleb, on Linuxi käsurea kohandamiseks tekstifailist sõnade ja tähemärkidega manipuleerimine käsk wc.

Sõnade arvu tähistav käsk wc on võimeline trükkima tekstifailist uue rea, sõna ja baitide arvu.

Väikeste skriptidega tekstifaili analüüsimiseks töötamiseks peab meil olema tekstifail. Ühtluse säilitamiseks loome tekstifaili käsu man väljundiga, nagu allpool kirjeldatud.

$ man man > man.txt

Ülaltoodud käsk loob käsu „man“ jaoks tekstifaili „man.txt“, mille sisu on „manuaalne leht“.

Soovime kontrollida kõige tavalisemaid sõnu ülaltoodud tekstifailis, käivitades alloleva skripti.

$ 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

Ülalolevas ühe liini lihtsas skriptis on kümme kõige sagedamini esinevat sõna ja nende esinemissagedus tekstifailis.

Kuidas oleks jagada sõna üksikuks, kasutades järgmist käsku.

$ echo 'tecmint team' | fold -w1
t 
e 
c 
m 
i 
n 
t 
t 
e 
a 
m

Märkus. Siin tähistab ‘-w1’ laiust.

Jaotame nüüd tekstifailis iga sõna, sorteerime tulemuse ja saame soovitud väljundi kümne kõige sagedasema tähemärgi sagedusega.

$ 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

Kuidas oleks, kui saada tekstifailis kõige sagedamini sümboleid ja väikesi tähti koos nende esinemissagedusega.

$ 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 .

Kontrollige ülaltoodud väljundit, kuhu on lisatud kirjavahemärgid. Võimaldab kirjavahemärgid käsuga ‘tr’ eemaldada. Siin me läheme:

$ 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

Nüüd on mul kolm tekstifaili, võimaldab väljundi nägemiseks käivitada ülaltoodud ühe vooderdiskripti.

$ 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

Järgmisena genereerime need harvad tähed, mis on vähemalt kümme tähte pikad. Siin on lihtne skript.

$ 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

Märkus: üha rohkem punkte ülaltoodud skriptis, kuni kõik tulemused on loodud. Saame kasutada. {10} kümne tähemärgi vaste saamiseks.

Need lihtsad skriptid annavad meile teada ka kõige sagedamini esinevad ingliskeelsed sõnad ja tähemärgid.

Praeguseks kõik. Olen siin taas ühe huvitava ja teadmatust vääriva teemaga, mida teile inimestele meeldib lugeda. Ärge unustage, et annate meile oma väärtuslikku tagasisidet allpool olevas kommentaaride jaotises.

Loe ka: 20 naljakat Linuxi käsku