Spaass am Linux Terminal - Spillt mat Wuert a Charakter zielt
Linux Kommandozeil huet vill Spaass ronderëm sech a vill langweileg Aufgab kënne ganz einfach awer mat Perfektioun ausgefouert ginn. Mat Wierder a Charaktere spillen, hir Frequenz an enger Textdatei, asw. ass wat mir an dësem Artikel gesinn.
Deen eenzege Kommando deen eis am Kapp kënnt, fir d'Linux Kommandozeil ze tweaking fir Wierder a Charaktere vun enger Textdatei ze manipuléieren ass wc Kommando.
E 'wc' Kommando dat fir Wuertzuel steet ass fäeg Newline, Wuert & Byte zielen aus enger Textdatei ze drécken.
Fir mat de klenge Scripten ze schaffen fir Textdatei ze analyséieren, musse mir eng Textdatei hunn. Fir d'Uniformitéit z'erhalen, kreéiere mir eng Textdatei mat der Ausgang vum Mann Kommando, wéi hei ënnendrënner beschriwwen.
$ man man > man.txt
Deen uewe genannte Kommando erstellt eng Textdatei 'man.txt'mat dem Inhalt vun 'manuell Säit'fir 'Man' Kommando.
Mir wëllen déi heefegst Wierder iwwerpréiwen, am uewe erstallt 'Textdatei' andeems Dir de Skript hei drënner leeft.
$ 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
Déi uewe genannte Linnen einfache Skript weist, zéng meescht dacks optrieden Wierder an hir Erscheinungsfrequenz, an der Textdatei.
Wéi wier et mat engem Wuert an eenzelnen opzedeelen andeems Dir folgend Kommando benotzt.
$ echo 'tecmint team' | fold -w1
t e c m i n t t e a m
Notiz: Hei ass '-w1' fir d'Breet.
Elo wäerte mir all eenzel Wuert an enger Textdatei ofbriechen, d'Resultat sortéieren an de gewënschten Ausgang mat der Frequenz vun zéng meescht häufigste Charaktere kréien.
$ 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
Wéi wier et mat de meeschte häufigste Zeechen an der Textdatei mat grousser an klenger anescht zesumme mat hirer Optriede Frequenz.
$ 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 .
Kuckt déi uewe genannte Ausgab, wou d'Punctuatiounszeechen abegraff ass. Loosst d'Punctuatioun erausstrecken, mam 'tr' Kommando. Lo geet et lass:
$ 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
Elo hunn ech dräi Textdateien, loosst den uewe genannte Liner Skript lafen fir d'Ausgab ze gesinn.
$ 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
Als nächst wäerte mir déi selten Bréiwer generéieren déi op d'mannst zéng Bréiwer laang sinn. Hei ass den einfachen 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
Notiz: Déi méi a méi Punkten am Skript uewendriwwer bis all d'Resultater generéiert ginn. Mir kënnen .{10} benotze fir zéng Charaktermatcher ze kréien.
Dës einfach Scripten, maachen eis och wëssen déi heefegst erschéngen Wierder a Charaktere op Englesch.
Dat ass alles fir elo. Ech wäert erëm hei mat engem aneren interessanten an off the Beat Thema sinn, dat wäertvollt weess, wat Dir Leit gär liesen. Vergiesst net eis Äre wäertvolle Feedback an der Kommentarsektioun hei ënnen ze ginn.
Liest och: 20 witzeg Kommandoe vu Linux