UnixTools01 08: Difference between revisions
(→grep) |
(→grep) |
||
Line 76: | Line 76: | ||
'''Q&E:''' Probieren Sie aus, was |
'''Q&E:''' Probieren Sie aus, was passiert, wenn das gesuchte Muster in gar keiner Datei enthalten ist. |
||
= tail = |
= tail = |
Revision as of 16:06, 27 November 2024
more basic tools
Hier einige weitere Kommandos, speziell für die Arbeit mit Dateien, die Sie oft benutzen werden
cat
$ cat file.txt erste Zeile der Datei file.txt zweite Zeile der Datei file.txt ... letzte Zeile der Datei file.txt
Das Program cat gibt den Inhalt der Datei file.txt auf dem Bildschirm aus, egal wie lang diese Datei ist. Sollte die Datei sehr lang sein, dann werden Sie ein Flimmern über dn Bilschhirm laufen sehen, den sie nicht so schnell lesen können, wie er auf dem Bildschirm erscheint. Dann brauchen Sie ein anderes Programm, z.B. das Programm more, dass den Inhalt der Datei Häppchenweise ausgibt, wie im nächsten Abschnitt beschrieben.
more
Das Kommando
$ more file.txt
gibt den Inhaltr der Datei file.txt auf dem Bildscvhirm aus, so ähnlich wie cat. Enthält die Datei jedoch mehr Zeilen, als auf einem Bildschirm passen, so gibt more (im Gegensatz zu cat) nur so viele Zeilen aus, wie auf den Bildschirm passen - und wartet danach, bis Sie die Leertaste drücken, danach kommen die nächsten Zeilen (maximal so viele, wie auf einen Bildschirm passen) usw. bis die Datei vollständig angezeigt wurde.
Für die Profis unter Ihnen:
- Solange die Datei noch nicht vollständig angezeigt wurde, zeigt more in der linken unteren Ecke an, wie viel Prozent des Inhalts Sie schon gesehen haben.
- Mit <Leerzeichen> blättern Sie eine Seite weiter
- Mit <Enter> wird genau eine weitere Zeile angezeigt
- Drücken Sie /, so können Sie danach ein Wort (genauer gesagt: Ein Text-Muster) angeben. more überspring dann alle Zeilen, bis es diesen Text (dieses Text-Muster) gefunden hat.
- Wenn Sie sehr neugierig sind, welche weiteren Möglichkeiten Ihnen more bietet, geben Sie ? ein, und dann werden Sie es erfahren
wc
Das Kommando wc (word count = Wörter zählen) liesst die angegebene Datei und zählt dabei, wie viele Worte es gesehen hat. Ebenso wird die Anzahl der Zeilen und die Anzahl der Buchstaben angegeben.
$gruenau4 jpr 14 ( ~ ) $ wc file.txt 48 96 405 file.txt
Sollte Sie von diesen drei Angaben nur eine interessieren, dann rufen Sie das Kommando wc mit einer geeigneten Option auf, und es wird sein Verhalten entsprechend ändern. Welche Optionen es gibt, erfahren Sie (wie bei den meisten andreen Kommandos auch, wenn Sie das Kommasndo mit der Option --help aufrufen.
$ gruenau4 jpr 13 ( ~ ) $ wc --help -c, --bytes Byteanzahl ausgeben -m, --chars Zeichenanzahl ausgeben -l, --lines Zeilenanzahl ausgeben -L, --max-line-length die Länge der längsten Zeile ausgeben -w, --words Wortanzahl ausgeben
Sie können das Kommando wc auch für mehr als eine Datei aufrufen, zum Beispiel mit 2 Dateien:
$gruenau4 jpr 16 ( ~ ) $ wc file.txt anotherfile.txt 48 96 405 file.txt 34 54 144 anotherfile.txt 82 150 549 insgesamt
grep
Sie haben eine wirklich lange Datei und Sie fragen sich, ob es irgendwo darin eine Zeile gibt, in der das Wort 'foobar' vorkommt? Dann hilft Ihnen das Programm grep. Wenn Sie das Kommando grep aufrufen, geben Sie zunächst das an, wonach Sie suchen (das Muster) und danach eine oder mehrere Dateien, die grep sich (in dieser Reihenfolge) ansehen soll.
$gruenau4 jpr 18 ( ~ ) $ grep 14 file.txt Zeile 14
Findet grep eine Zeile, in der (vielleicht nehen anderen Dingen) das gesuchte Muster steht, so gibt es diese Zeile aus.
Sollte grep mehrere Dateien durchsuchen, so gibt grep zusätzlich den Namen der Datei aus, in der es die gesuchte Zeile gefunden hat.
gruenau4 jpr 19 ( ~ ) $ grep 14 file.txt anotherfile.txt file.txt:Zeile 14
In Verbindung mit Wildcards ist dies sehr nützlich. Fragen Sie sich beispielsweise, in welcher *.txt -Datei wohl eine Zeile mit der Zeichenfolge 14 steht, dann spezifizieren Sie alle in Frage kommenden Dateien über eine Wildcard:
gruenau4 jpr 20 ( ~ ) $ grep 14 *.txt file.txt:Zeile 14
Zur Erinnerung: Bevor die Shell das Kommando grep ausführt, ersetzt es die wildcard '*.txt' durch die Namen aller Dateien, die auf die Wildcard *.txt passen. In diesem Fall sind dies alle Dateien ihres aktuellen Working Directories, die auf .txt enden. Grep wird dann alle diese Dateien nach Zeilen durchsuchen, die 14 enthalten. Findet es welche, so gibt es den Namen der Datei, sowie die gesamte gefundene Zeile aus. Im obigen Beispiel gibt es also nur eine Datei, die das gesuchte Muster enthält.
Q&E: Probieren Sie aus, was passiert, wenn das gesuchte Muster in gar keiner Datei enthalten ist.