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