Shell - Ordner nach Strings (RegEx) durchsuchen und ausgeben

Obile

Cadet 3rd Year
Registriert
Juni 2010
Beiträge
43
Hallo

Ich habe leider noch keine Erfahrung mit shell programmierung und möchte mit kleinen Shell scripts beginnen.

Ich will in einem Unterordner (Bsp: /temp) nach Strings durchsuchen.
- Die Strings beginnen zb mit "http" und enden mit "png".
- Die strings sollten in eine Datei geschrieben werden (aber nur teilweise, also zb nur der filename ohne die Domain)

Das wäre mal der Anfang.
Ich habe jetzt schon probiert, mit cat und grep die Dateien teilweise zu durchsuchen.
Die ausgaben sind teilweise etwas dürftig bzw funktioniert überhaupt nicht.
Zum einen Scheitert es schon am Regex und zum anderen zum beschneiden des strings.

Beispiel aus dem Computerbase Quelltext (bisschen geändert):
Input:
Code:
<img itemprop="logo" src="/design/logo.png" src="/design/logo.2x.png 2x" width="150" height="96" alt="ComputerBase" /></a>
Nach zu Suchenden String: "src=.*png" (Also stirngs die mit "src=" beginnen und mit "png" enden)
Der Output sollte dann Folgender sein:
Code:
logo.png
logo.2x.png

Kann mir da jemand helfen?

Danke
 
Der Pattern dürfte glaube ich eher so aussehen "^[sS][rR][cC]\=\".*\.[pP][nN][gG]"

Normal sollte es reichen hirdrum noch eine Schleife zu basten.
Er liest die Datei $INFILE, gibt die Ausgabe an grep weiter, welches als Ausgabe in die Datei $OUTFILE schreibt
Code:
cat $INFILE | grep -o "^[sS][rR][cC]\=\".*\.[pP][nN][gG]" >> $OUTFILE
 
Schau mal ob die folgende Zeile bei dir funktioniert.
Code:
grep -ioP '(?<=src=").*?png(?=[" ])' $INFILE | sed 's/.*\///g'

Die von OSX mitgelieferte grep-Version kennt das -P nicht und kann daher die Lookarounds nicht bearbeiten. Wenn das bei dir geht sollte dich der Befehl eigentlich glücklich machen.

Grep holt den ganzen Pfad raus und sed schmeißt alles bis auf den Dateinamen weg, was nötig ist, da man in den lookarounds keine * oder ähnliches verwenden kann.

Edit: @Fonce: Da mir das auch immer an den Kopf geworfen wird hier auch mal für dich http://partmaps.org/era/unix/award.html#cat ;) Ich benutze cat selbst viel zu oft, aber eigentlich ist es ein schlechter Stil.
 
Zuletzt bearbeitet:
Ja ich weiß, denke aber irgendwie nie daran :p
Bei deinem RegEx ist aber auch noch das Problem, das sie nur funktionieren wird wenn "src" und "png" klein geschrieben sind. Einige Leute kommen aber auch auf die blöde Idee Attribute oder Dateiendungen groß zu schreiben. :rolleyes:
 
Zurück
Oben