Spaß im Linux-Terminal – Spielen Sie mit Wort- und Zeichenzählungen
Die Linux-Befehlszeile macht viel Spaß und viele mühsame Aufgaben können sehr einfach und dennoch perfekt ausgeführt werden. Das Spielen mit Wörtern und Zeichen, deren Häufigkeit in einer Textdatei usw. ist das, was wir in diesem Artikel sehen werden.
Der einzige Befehl, der uns in den Sinn kommt, um die Linux-Befehlszeile zu optimieren, um Wörter und Zeichen aus einer Textdatei zu manipulieren, ist der Befehl wc.
Ein „wc“-Befehl, der für Wortanzahl steht, ist in der Lage, Zeilenumbrüche, Wort- und Bytezahlen aus einer Textdatei zu drucken.
Um mit den kleinen Skripten zur Analyse einer Textdatei arbeiten zu können, benötigen wir eine Textdatei. Um die Einheitlichkeit zu wahren, erstellen wir eine Textdatei mit der Ausgabe des man-Befehls, wie unten beschrieben.
man man > man.txt
Der obige Befehl erstellt eine Textdatei „man.txt“ mit dem Inhalt von „manual page“ für den Befehl „man“.
Wir möchten die häufigsten Wörter in der oben erstellten „Textdatei“ überprüfen, indem wir das folgende Skript ausführen.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Beispielausgabe
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Das obige einfache Einzeiler-Skript zeigt die zehn am häufigsten vorkommenden Wörter und ihre Häufigkeit in der Textdatei.
Wie wäre es, wenn Sie ein Wort mit dem folgenden Befehl in einzelne Wörter zerlegen?
echo 'tecmint team' | fold -w1
Beispielausgabe
t
e
c
m
i
n
t
t
e
a
m
Hinweis: Hier steht „-w1“ für die Breite.
Jetzt zerlegen wir jedes einzelne Wort in einer Textdatei, sortieren das Ergebnis und erhalten die gewünschte Ausgabe mit der Häufigkeit der zehn häufigsten Zeichen.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Beispielausgabe
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Wie wäre es, wenn die häufigsten Zeichen in der Textdatei mit unterschiedlichen Groß- und Kleinbuchstaben zusammen mit ihrer Häufigkeit ermittelt würden?
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Beispielausgabe
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 .
Überprüfen Sie die obige Ausgabe, in der das Satzzeichen enthalten ist. Entfernen wir die Zeichensetzung mit dem Befehl „tr“. Auf geht's:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Beispielausgabe
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
Jetzt habe ich drei Textdateien. Lassen Sie uns das obige Einzeiler-Skript ausführen, um die Ausgabe anzuzeigen.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Beispielausgabe
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Als nächstes generieren wir die seltenen Buchstaben, die mindestens zehn Buchstaben lang sind. Hier ist das einfache Skript.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Beispielausgabe
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
Hinweis: Je mehr Punkte im obigen Skript vorhanden sind, bis alle Ergebnisse generiert sind. Wir können .{10} verwenden, um zehn Zeichenübereinstimmungen zu erhalten.
Diese einfachen Skripte machen uns auch mit den am häufigsten vorkommenden Wörtern und Zeichen im Englischen vertraut.
Das ist alles für den Moment. Ich bin wieder hier mit einem weiteren interessanten und ungewöhnlichen, wissenswerten Thema, das Sie gerne lesen werden. Vergessen Sie nicht, uns im Kommentarbereich unten Ihr wertvolles Feedback mitzuteilen.
Lesen Sie auch: 20 lustige Befehle von Linux