
Ich möchte Text in einem Zeichenfolgenmuster aus einer Datendatei suchen und ihn mithilfe von Shell oder AppleScript in eine Textliste extrahieren.
Ein Beispiel innerhalb von XML:
node file="source_files/ (var1) .mp3"
Ein weiteres Beispiel innerhalb von HTML:
src="http:// (example.com) /dir/ (var2) .txt"
Gewünschte Ausgabe:
1.1 source_files/example1.mp3
1.2 source_files/blah.blah
2.1 http://example.com/dir/example2.txt
2.2 http://example.com/dir/blah.blah
Meine Frage ist nun: Wie kann ich in einer Textdatei die Reihe aller Zeichenfolgen suchen, finden und extrahieren, die vor, nach oder vor beiden das spezifische Zeichenfolgenmuster aufweisen?
Antwort1
Wie wäre es mit dem folgenden grep
Befehl:
grep -Po '(?<==")[^"]+(?=")'
Dadurch werden Zeichenfolgen in doppelten Anführungszeichen extrahiert, die nach Gleichheitszeichen erscheinen. Hier ist es in Aktion:
user@host:~$ echo 'node file="source_files/example1.mp3"' \
| grep -Po '(?<==")[^"]+(?=")'
source_files/example1.mp3
user@host:~$ echo 'src="http://example2.com/dir/example2.txt"' \
| grep -Po '(?<==")[^"]+(?=")'
http://example2.com/dir/example2.txt
Antwort2
grep -F 'node file="source_files/example1.mp3"'
grep -F 'src="http://example2.com/dir/example2.txt"'