Zu_Befehl.gif

Hier grept der Bär!

Zu Befehl

01.07.2000
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
 

Ä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 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...