Forenindex » Betriebsysteme und Dienste » Apple (Hard- und Software) » grep, ich steh auf dem Schlauch _:)

grep, ich steh auf dem Schlauch _:)

gargantua
Beiträge gesamt: 6

5. Jun 2012, 12:24
Bewertung:

gelesen: 1912

Beitrag als Lesezeichen
Hallo ihr Experten,
ich habe eine Datei, aus der ich alle Zeilen haben möchte die ".png" enthalten und das mache ich so:
1. grep --text '.png' /Users/ronny/Desktop/CASAblanca.text > /Users/ronny/Desktop/Result.text
Soweit perfekt.

Jetzt wollte ich das ganze etwas erweitern. Es sollen auch die Zeilen gefunden werden, die ".jpg" enthalten.

Neben allen möglichen Varianten habe ich zuletzt dieses probiert:
2. grep --text --regexp="(.png | .jpg)" /Users/ronny/DEV/0010-CASAblancaV12/CASAblanca.4dbase/CASAblanca.4DB > /Users/ronny/Desktop/Result.text
Aber die Zieldatei bleibt leer. Ganz falsch scheint das nicht zu sein.

Versuche ich nämlich dies:
3. grep --text --regexp=".png" /Users/ronny/DEV/0010-CASAblancaV12/CASAblanca.4dbase/CASAblanca.4DB > /Users/ronny/Desktop/Result.text
Dann erhalte ich das gleiche Ergebnis wie in Versuch 1. Mein Regexp in 2. scheint falsch zu sein.

Hat jemand einen Tip? Am besten wäre es, wenn ich alle Grafik Extensions erhalten würde, aber das wird wohl nicht gehen, oder?

Grüsse, Ronald
---

grep, ich steh auf dem Schlauch _:)

Thomas Richard
Beiträge gesamt: 19327

5. Jun 2012, 12:48
Bewertung:

gelesen: 1897

Beitrag als Lesezeichen
Runde gegen eckige Klammern tauschen?
Und die Leerzeichen um die Pipe löschen?

also
Code
--regexp="[png|.jpg]" 



MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

(Dieser Beitrag wurde von Thomas Richard am 5. Jun 2012, 12:50 geändert)

grep, ich steh auf dem Schlauch _:)

gargantua
Beiträge gesamt: 6

6. Jun 2012, 05:28
Bewertung:

gelesen: 1829

Beitrag als Lesezeichen
Auf alle Fälle ist die Zieldatei jetzt nicht mehr leer :)

Aber es dauert sehr lange bis er fertig ist.
Nach einer Viertelstunde habe ich abgebrochen.
Es scheint so als ob jetzt alles in meiner Zieldatei ist, was auch in meiner Quelldatei (99MB) ist.
Das sollte nicht sein.

Folgendes habe ich probiert (ein Auszug):
in der Zieldatei ist das erwünschte drin
1. grep --text --regexp=".png" /Users/ronny/Desktop/TextFile.text > /Users/ronny/Desktop/Result.text

in der Zieldatei ist Nicht das erwünschte drin
2. grep --text --regexp="[jpg|.png]" /Users/ronny/Desktop/TextFile.text > /Users/ronny/Desktop/Result.text
3. grep --text --regexp="\.jpg|\.png" /Users/ronny/Desktop/TextFile.text > /Users/ronny/Desktop/Result.text

Im Regextester habe ich die Variante 3. mit Erfolg getestet, aber irgendwie :(

Gruss, Ronald
---

grep, ich steh auf dem Schlauch _:)

Martin Fischer
Beiträge gesamt: 12779

6. Jun 2012, 08:03
Bewertung:

gelesen: 1803

Beitrag als Lesezeichen
Hallo Ronald,

mit den eckigen Klammern definierst Du Zeichenklassen, d.h. gesucht werden alle Zeichen, die in eckigen Klammern stehen.
'L[au]nge' findet 'Lange' und 'Lunge'.

Alternative Zeichenmuster werden – richtig - mit der Pipe getrennt: '\.jpg|\.png'.

Mit GREP im Terminal kenne ich mich nicht so gut aus.
Aber ich hab's mal mit einer escapten Pipe \| versucht und es scheint zu funktionieren:

Code
 grep -a -e='\.jpg\|\.png' /Users/ronny/Desktop/TextFile.text > /Users/ronny/Desktop/Result.text 


Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 6. Jun 2012, 08:06 geändert)

grep, ich steh auf dem Schlauch _:)

gargantua
Beiträge gesamt: 6

6. Jun 2012, 09:42
Bewertung:

gelesen: 1771

Beitrag als Lesezeichen
Das escapen des OR Zeichens war die richtige Idee.
Jetzt klappt es auch hier.

Vielen Dank für die Tipps.

Gruss, Ronald
---

(Dieser Beitrag wurde von gargantua am 6. Jun 2012, 09:43 geändert)