Home / LinuxUser / 2000 / 07 / Zu Befehl

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1549 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Ubuntu 11.10 Compiz 3D Cube flackern
Moritz Obenauer, 12.02.2012 12:25, 0 Antworten
Hallo! Ich habe Ubuntu 11.10 mit Unity und den Compiz 3D Cube ein gerichtet. Er funktioniert...
Suse 12.1 Bootvorgang bleibt seit Update stehen
Wimpy *, 12.02.2012 09:22, 2 Antworten
Seit Update auf Kernel 3.1.9-1.4-desktop i686 bleibt der Bootvorgang stehen. Es erscheint der gr...
N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...