Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

fgrep - Zeichenketten suchen

&pagelevel(4)&pagelevel

(search a file for a fixed-string pattern)


fgrep liest Zeilen aus einer oder mehreren Dateien oder von der Standard-Eingabe und durchsucht die Zeilen nach Zeichenketten. Ist mittels Optionen nichts anderes angegeben, so schreibt fgrep alle Zeilen, die eine der angegebenen Zeichenketten enthalten, auf die Standard-Ausgabe.
Geben Sie mehrere Eingabedateien an, dann wird jeder Ausgabezeile der Name der betreffenden Datei vorangestellt.


Syntax


Format 1:fgrep[ -bchilnrvxy] -e musterliste[ datei...]
Format 2:fgrep[ -bchilnrvxy] -f musterdatei[ datei...]
Format 3:fgrep[ -bchilnrvxy] musterliste[ datei...]

Die Formate werden gemeinsam beschrieben, da die Zeichenketten, nach denen fgrep suchen soll, entweder über musterliste oder über die Option -e musterliste oder -f musterdatei angegeben werden muss. Eines dieser Argumente müssen Sie angeben, zwei zusammen oder alle drei sind nicht erlaubt.


Keine Option angegeben

fgrep gibt alle Zeilen aus, die mindestens eine der in liste angegebenen Zeichenketten enthalten. Geben Sie mehrere Eingabedateien an, dann wird jeder Ausgabezeile der Name der Datei vorangestellt, aus der die Zeile gelesen wurde.

-b

(b - block)

Jeder Ausgabezeile wird die Nummer des Blocks vorangestellt, in dem sie enthalten ist.

Die Blöcke, aus denen eine Datei besteht, sind je 512 Byte groß und werden, mit 0 beginnend, durchnummeriert.

Die Option -b kann hilfreich sein, wenn die Nummern von Blöcken nach dem Kontext ermittelt werden sollen (siehe z.B. das Kommando od, Argument offset).

-c

(c - count)

fgrep gibt nur die Anzahl der gefundenen Zeilen aus (das sind die Zeilen, die fgrep ohne die Option -c ausgeben würde, siehe Beispiel 4); die Zeilen selbst werden nicht ausgegeben.

-h

(h - hidden)

Beim Durchsuchen mehrerer Eingabedateien unterlässt fgrep die Voranstellung der Dateinamen vor jeder Ausgabezeile.

-i oder -y

(i - ignore)

fgrep unterscheidet beim Vergleich nicht zwischen Groß- und Kleinbuchstaben.

-l

(l - list)

fgrep gibt nur die Namen der Dateien aus, die mindestens eine der gefundenen Zeilen enthalten (das sind die Zeilen, die fgrep ohne die Option -l ausgeben würde, siehe Beispiel 5). Jeder Dateiname wird nur einmal ausgegeben. Die Zeilen selbst gibt fgrep nicht aus.

-n

(n - number lines)

Jeder Ausgabezeile wird die Zeilennummer aus der betreffenden Eingabedatei vorangestellt, wobei von 1 an nummeriert wird. Liest fgrep von der Standard-Eingabe, bezieht sich die Zeilennummer auf die Standard-Eingabe.

-r

(r - recursive)

Jeder Dateiname, der ein Verzeichnisname ist, wird rekursiv durchsucht. Das bedeutet, das alle Dateien und Dateiverzeichnisse, die in diesem Dateiverzeichnis enthalten sind, berücksichtigt werden.

-v

(v - vice versa)

fgrep gibt alle Zeilen aus, die keine der angegebenen Zeichenketten enthalten.

Zusammen mit Option -c: fgrep gibt nur die Anzahl solcher Zeilen aus. Zusammen mit Option -l: fgrep gibt nur die Namen der Dateien aus, die solche Zeilen enthalten.

-x

(x - exact)

fgrep gibt nur solche Zeilen aus, die eine der angegebenen Zeichenketten und sonst keine weiteren Zeichen enthalten.

Zusammen mit Option -c: fgrep gibt nur die Anzahl solcher Zeilen aus. Zusammen mit Option -l: fgrep gibt nur die Namen der Dateien aus, die solche Zeilen enthalten.

-e musterliste

(e - expression) Diese Option brauchen Sie, wenn der erste Ausdruck in musterliste mit einem Bindestrich - beginnt. Zusammen mit -e wird eine solche Musterliste nicht als Option interpretiert, sondern als Liste von Mustern, mit denen fgrep die Eingabezeilen vergleichen soll.

-f musterdatei

(f - file) fgrep liest die Suchzeichenketten aus der Datei musterdatei. Jede Zeile von musterdatei wird als eine Zeichenkette interpretiert.

musterliste

Liste von Zeichenketten, mit denen fgrep die Eingabezeilen vergleichen soll. Die Zeichenketten trennen Sie durch Neue-Zeile-Zeichen. Enthält musterliste Neue-Zeile-Zeichen oder sonstige Zeichen, die für die Shell eine Sonderbedeutung haben, dann schließen Sie musterliste in Hochkommas ein: ’musterliste’.

datei

Name der Datei, die fgrep durchsuchen soll. Pro Aufruf können Sie mehrere Dateinamen angeben.

datei nicht angegeben:
fgrep liest die Eingabezeilen von der Standard-Eingabe.

grep, fgrep und egrep

Die Kommandos grep, fgrep und egrep sind von der Oberfläche her weitgehend identisch. Im Folgenden sind die wichtigsten Unterschiede zwischen diesen Kommandos aufgeführt.

grep verarbeitet einfache reguläre Ausdrücke. Pro Aufruf können Sie nur einen einzigen regulären Ausdruck angeben.

fgrep verarbeitet nur Zeichenketten. Pro Aufruf können Sie jedoch mehrere Zeichenketten angeben: Die Zeichenketten geben Sie entweder direkt in der Aufrufzeile, getrennt durch Neue-Zeile-Zeichen, an oder Sie übergeben sie in einer Datei. fgrep kann effizient sehr viele Zeichenketten suchen: fgrep sucht jede einzelne Zeile nach allen Zeichenketten ab.

egrep verarbeitet erweiterte reguläre Ausdrücke. Diese umfassen u.a. die einfachen regulären Ausdrücke bis auf eine Ausnahme: Der einfache reguläre Ausdruck \(regausdruck\) hat bei erweiterten regulären Ausdrücken keine Sonderbedeutung und wird deshalb auch nicht von egrep verarbeitet. Pro Aufruf können Sie mehrere reguläre Ausdrücke, durch Neue-Zeile-Zeichen getrennt, angeben. egrep interpretiert diese Neue-Zeile-Zeichen wie einen senkrechten Strich (Zeichen für die Alternative, siehe Tabellen und Verzeichnisse, Reguläre Ausdrücke). Die regulären Ausdrücke geben Sie entweder direkt in der Aufrufzeile an oder Sie übergeben sie in einer Datei.

Endestatus

0Zeilen gefunden
1keine Zeile gefunden
>1Syntaxfehler oder Datei kann nicht geöffnet werden.
Dieser Endestatus gilt auch dann, wenn in anderen Eingabedateien Zeilen gefunden wurden.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos fgrep:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_COLLATE

beeinflusst die Sortierreihenfolge.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel


Grundlage für die Beispiele sind die Dateien kunden1 und kunden2. Sie haben folgenden Inhalt:

kunden1:

080685    999.98  20 LE  Art.  038   Fa. Holzinger
120387   1240.25   3 LE  Art.  023   Fa. Wanninger
180588    330.87   1 LE  Art.  332   Fa. Wanninger

kunden2:

hinterhuber berta, rosenheim, zugspitzstr.1
wanninger herbert, muenchen, kirschstr.3
Beispiel 1

Zeilen ausgeben, die eine bestimmte Zeichenkette enthalten (keine Option und Option -i):

$ fgrep Wanninger kunden1 kunden2

kunden1:120387   1240.25   3 LE  Art.  023   Fa. Wanninger
kunden1:180588    330.87   1 LE  Art.  332   Fa. Wanninger

Wenn Sie auch Zeilen mit kleingeschriebenem wanninger ausgeben lassen möchten, geben Sie ein:

$ fgrep -i wanninger kunden1 kunden2

kunden1:120387   1240.25   3 LE  Art.  023   Fa. Wanninger
kunden1:180588    330.87   1 LE  Art.  332   Fa. Wanninger

kunden2:wanninger herbert, muenchen, kirschstr.3

Beispiel 2

Mehrere Zeichenketten suchen (keine Option und Option -f):

$ fgrep 'Wanninger
> Holzinger' kunden1 kunden2

kunden1:080685    999.98  20 LE  Art.  038   Fa. Holzinger

kunden1:120387   1240.25   3 LE  Art.  023   Fa. Wanninger
kunden1:180588    330.87   1 LE  Art.  332   Fa. Wanninger

Sie können die beiden Zeichenketten auch in eine Datei namen schreiben (je Zeichenkette eine Zeile) und fgrep folgendermaßen aufrufen:

$ fgrep -f namen kunden1 kunden2
Beispiel 3

Zeilen ausgeben, die bestimmte Zeichenketten nicht enthalten (Option -v):

$ fgrep -v Wanninger kunden1 kunden2

kunden1:080685    999.98  20 LE  Art.  038   Fa. Holzinger

kunden2:hinterhuber berta, rosenheim, zugspitzstr.1

kunden2:wanninger herbert, muenchen, kirschstr.3

Beispiel 4

Anzahl der gefundenen Zeilen ausgeben (Option -c):

Zuerst soll für jede Eingabedatei die Anzahl der Zeilen, die die Zeichenkette Wanninger enthalten, ausgegeben werden.

$ fgrep -c Wanninger kunden1 kunden2

kunden1:2

kunden2:0

Nun soll die Anzahl der Zeilen, die die Zeichenkette Wanninger nicht enthalten, ausgegeben werden.

$ fgrep -c -v Wanninger kunden1 kunden2

kunden1:1

kunden2:2

Beispiel 5

Nur Dateinamen ausgeben (Option -l):

Zuerst sollen die Namen der Dateien, die die Zeichenkette Wanninger enthalten, ausgegeben werden.

$ fgrep -l Wanninger kunden1 kunden2

kunden1

Nun sollen die Namen der Dateien, die Zeilen ohne die Zeichenkette Wanninger enthalten, ausgegeben werden.

$ fgrep -l -v Wanninger kunden1 kunden2
kunden1

kunden2

Beispiel 6

Gefundene Zeilen mit Zeilennummer ausgeben (Option -n):

$ fgrep -n -i wanninger kunden1 kunden2
kunden1:2:120387   1240.25   3 LE  Art.  023   Fa. Wanninger

kunden1:3:180588    330.87   1 LE  Art.  332   Fa. Wanninger

kunden2:2:wanninger herbert, muenchen, kirschstr.3

Siehe auch

ed, egrep, grep, sed