# Datei mittels grep durchsuchen



## bauchinj (19. November 2010)

Hallo!

Ich möchte gerne eine Datei Zeile für Zeile nach einem bestimmten String durchsuchen und diese Zeilen ausgeben.


```
grep 'mein String' file.txt
```

Nun kommt aber noch die Hürde dazu, dass jede Zeile eine gewisse Anzahl eines Zeichens beinhalten MUSS, bsp. 7x f.

also folgende Zeile ist nicht richtig:

```
ffmein String ff
```

folgende hingegen schon:


```
ff fda kann auch was anderes f stehen! mein Stringff f
```

kann ich dies mit grep lösen, vermute mit einem regulären Ausrück dürfte dies möglich sein, nur bin ich da leider nicht so fit......

Danke für eure Hilfe


----------



## deepthroat (19. November 2010)

Hi.

Mit reg. Ausdrücken kannst du keine Zeichen zählen.

Du müßtest mit Ersetzung arbeiten. Z.B. mit sed, awk oder Perl.

Filtere alle Zeilen mit dem gesuchten String, drucke nur diejenigen aus, welche nach dem Ersetzen aller Zeichen die *nicht* dem gewünschten Zeichen entsprechen noch die gewünschte Länge haben.

Gruß


----------



## bauchinj (19. November 2010)

hm.... danke erstmal für die schnelle Antwort. So wirds aber leider auch nicht funktionieren, da jede Zeile eine unterschiedliche länge haben kann.....

kannst du mir ev. einen Ansatz für Perl mit auf dem Weg geben?


----------



## deepthroat (19. November 2010)

bauchinj hat gesagt.:


> hm.... danke erstmal für die schnelle Antwort. So wirds aber leider auch nicht funktionieren, da jede Zeile eine unterschiedliche länge haben kann.....


Doch so wird es funktionieren, wenn das Muster mit der entsprechenden Anzahl an Zeichen übereinstimmt (es dürfen ja mehr sein).


bauchinj hat gesagt.:


> kannst du mir ev. einen Ansatz für Perl mit auf dem Weg geben?


In Perl kannst du einfach eine Bedingung formulieren:

```
perl -n -e 'print $0 if (...);' < FILE
```

\edit: mir ist grad eingefallen, dass man es auch etwas vereinfachen kann:

```
sed -n -e '/mein String/{ /\(f[^f]*\)\{7\}/p }'
```
Gruß


----------

