Website-Suche

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