Zu_Befehl.gif

Zu Befehl

Hier grept der Bär!

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

In der letzten "Zu Befehl"-Folge wurde gezeigt, wie man mit Hilfe von find Dateien (wieder) finden kann. Manchmal ist das jedoch nicht genug, man weiß genau, dass irgendwo in einer Datei eine Information steckt – welche der 20 Dateien enthält bloß die Zeichenkette "Mit freundlichen Grüßen"? Mit dem Kommando grep lässt sich gezielt nach Mustern suchen. Als Ergebnis erhält man entweder den gefundenen Textabschnitt oder die Anzahl der Zeilen, in denen das Suchmuster gefunden wurde. Und es wird noch besser: Wenn man grep und find kombiniert, kann man alle Dateien, die bestimmten (find-) Bedingungen entsprechen, durchforsten.

Mal mir ein Suchmuster!

Der Begriff "Suchmuster" ist jetzt schon oft gefallen, aber was kann man sich denn nun darunter vorstellen? Diese sogenannten "regular expressions" (siehe auch man regex) haben normalerweise zwei Komponenten: die Angabe, nach welchem Zeichen gesucht wird, und die Angabe, wie oft die gesuchten Zeichen auftreten dürfen. Was sich kompliziert anhört, kann man sich in einer Tabelle ganz einfach vor Augen führen (s. Tabelle 1).

Tabelle 1: Suchmuster – "regular expressions"

Muster Bedeutung
abc genau diese Zeichenkette: "abc"
[abc] eines dieser Zeichen: a, b oder c
[^abc] keines der Zeichen darf auftauchen
[a-c] eines der Zeichen von a bis c
. ein beliebiges Zeichen
? das Zeichen vor dem ? darf einmal oder gar nicht auftreten
* das Zeichen darf beliebig oft oder gar nicht auftreten
+ das Zeichen darf beliebig oft, muss aber mindestens einmal auftreten
{n} das Zeichen muss genau n-mal auftreten
{,n} das Zeichen darf höchstens n-mal auftreten
{n,} das Zeichen muss mindestens n-mal auftreten
{n,m} das Zeichen muss mindestens n-mal und höchstens m-mal auftreten

Viele dieser Muster werden Sie nicht sehr häufig benutzen, dennoch sind einige davon (gerade in Zusammenhang mit grep) wichtig. Wenn Sonderzeichen, wie z. B. ?, * oder + im Suchmuster verwendet werden sollen, muss vor das entsprechende Zeichen der Backslash ("\") gestellt werden, weil das Zeichen sonst von der Shell interpretiert wird. Beachten sollte man weiterhin, dass Groß- und Kleinschreibung unterschieden wird. So sucht [^A-Z] beispielsweise nach allen Zeichen, die keine Großbuchstaben sind.

Auf das grep, fertig, los!

Nachdem Sie jetzt wissen, wonach Sie suchen können, sollten wir uns die einzelnen Optionen von grep anschauen. Der einfachste Aufruf lautet grep suchmuster datei, wobei auch mehrere Dateien durchsucht werden können, indem man sie entweder beim Aufruf hintereinander hängt oder durch Shell-Wildcards erfasst. Jede Zeile, in der der Textabschnitt auftaucht, wird zeilenweise ausgegeben, der Output könnte so aussehen:

huhn@huehnerstall ~ > grep Zeichen text
muss vor das entsprechende Zeichen der
weil das Zeichen sonst von der Shell interpretiert

Sie möchten mehr Kontext? Kein Problem, grep -num ... (wobei num die Zeilenanzahl ist) zeigt zusätzlich zu der Zeile mit dem Suchmuster die num unmittelbar davorstehenden und nachfolgenden Zeilen. Ein Tipp: Sollten die Zeilen einmal aus dem Fenster heraus scrollen, leiten Sie den Aufruf zu einem Pager Ihrer Wahl um, z. B. grep -10 Zeichen text | less. Übrigens ist die gerade gezeigte Option nicht zu verwechseln mit dem Aufruf grep -n datei – hier sehen Sie vor der Zeile mit dem Suchwort auch die Zeilennummer. Wenn man einfach nur wissen möchte, in wievielen Zeilen das gesuchte Wort auftaucht, verwendet man den Parameter grep -c muster datei – er gibt nur die Anzahl der Zeilen an.

Was für die Suchmuster gilt, gilt auch für grep, es arbeitet "case sensitive", d. h. Groß- und Kleinschreibung sind relevant. Wenn diese Unterscheidung nicht gewünscht ist, können Sie sie mit grep -i ... umgehen. Vorsicht: Dabei tauchen oft auch Ergebnisse auf, die das gesuchte Wort als Teilwort enthalten. Wenn Sie z. B. grep -i die datei tippen, werden also auch Wörter wie "Diese" oder "dieser" gefunden. Hier kommt Abhilfe: Kombinieren Sie die -i-Option mit -w – jetzt werden nur noch ganze Wörter gefunden.

In einer der letzten Folgen tauchten Probleme mit Bindestrichen am Dateianfang auf – rm -datei ließ sich nur mit einem Trick löschen: entweder mit einem rm ./-datei oder mit dem Aufruf rm -- -datei. (!!!DOPPEL-MINUS!!!) Auch grep hat Schwierigkeiten mit dem -. Die Aufforderung, einen Text nach dem Begriff "-ctime" zu durchsuchen, wird vom System zurückgewiesen:

huhn@huehnerstall ~ > grep -ctime text
grep: invalid option -- t (!!!DOPPEL-MINUS!!!)
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' (!!!DOPPEL-MINUS!!!) for more information.

Das -c wird interpretiert, aber das t kann schon nicht mehr ausgewertet werden. Abhilfe schafft der Parameter -e suchmuster – jetzt wird "-ctime" richtig ausgewertet.

Oft werden Suchmuster mit regulären Ausdrücken lang und kompliziert. Möchten Sie mehrmals nach komplexen Mustern suchen, bietet sich die Möglichkeit, diese Ausdrücke in einer Datei abzuspeichern. Diese kann dann mit grep -f suchmusterdatei datei eingebunden werden.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • The Answer Girl
    Dass der Computeralltag auch unter Linux immer wieder für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im Linux-Magazin zeigt, wie man mit solchen Problemchen elegant fertig wird.
  • sed
    Der Stream-Editor sed hilft beim automatischen Verändern einer oder mehrerer Dateien, vereinfacht sich wiederholende Änderungen oder erstellt gleich ganze Konvertierungsprogramme. Monotone Aufgaben der Textverarbeitung lassen sich so im Handumdrehen lösen.
  • Suche in komprimierten Dateien und Archiven
    Über die Kommandozeile flink in komprimierten Dateien und Archiven zu suchen, spart viel Zeit. Die richtigen Tools dazu bringt praktisch jedes Linux-System von Haus aus mit.
  • Hardcore Linux
    Dieser Teil der Serie über die Bash stellt die Grundlagen für die Arbeit mit mehreren und verketteten Befehlen auf der Bash zusammen.
Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Brother Drucker DCP-J4120
Achim Zerrer, 09.12.2016 18:08, 0 Antworten
Hallo, ich wollte unter Leap 42.1 den Brother Drucker installieren und dazu das PPD- Datei vom do...
Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...