UNIX-Shell bash ‚one-liner‘, um alle Klammern zu isolieren, eine URL enthält, die „mp3“ umfasst
-
25-09-2019 - |
Frage
Ich bin ganz neu in dieser bash Sachen Unix - und erste Frage hier! Hoffe, dass Sie Jungs können helfen:)
Problem:
Ich habe eine Masse von unordentlich Web-Quellcode (Verpackung / unformatiert), die mehrere Vorkommen:
( 'http://www.example.com/path/audio.mp3')
Könnten Sie bitte Hilfe mit einem Einzeiler (sed / awk ...), dass diese Vorkommen von isolieren wird Klammern eine URL enthält, die „.mp3" , sauber Vorder- / Hinter“ enthält < strong> () “und " " Zeichen, und dann als Liste (eine pro Zeile) zu einer aktiven .txt-Datei drucken.
Hinweis: 'ausgewählter Text' Der Einzeiler wird in Automator auf Mac als Service / Workflow Aktion verwendet wird
Jede Hilfe würde sehr geschätzt werden als (trotz der Online-tuts durch alle Schleppen) ich völlig verloren bin.
Mit freundlichen Grüßen
Dave
Lösung
Mit egrep
mit -o
(Ausgabe nur die Teile, die Ursache) sollte es tun. Probieren Sie etwas wie folgt aus:
egrep -o "http://[^'\"]+.mp3" FILENAME
Andere Tipps
PERL, die Mac soll.
#!/usr/bin/perl
while(<STDIN>)
{
$_ =~ /.*(http:\/\/.*\.mp3).*/;
print $1 . '\n';
}
Versuchen Sie, die folgenden verfeinern:
perl -ne $'while(/\(\'(http:\/\/[\w.\/]+?\.mp3)\'\)/g) { print "$1\n"; }' < input_file > output_file
Es lesen stdin (hier: input_file
) eine Zeile zu einem Zeitpunkt, sieht für jedes Auftreten eines „url“ in dieser Zeile und druckt sie auf die Standardausgabe (hier: output_file
). Ohne ('
und ')
awk '{print $2}' FS="('|')" < filename
cat filename | tr ')' '\n' | awk '{print $2}' FS="('|')" > output.txt
Ersetzen Sie einfach filename
mit dem Namen der Datei diese Zeilen enthalten ..
oder
echo "your multiline\
text here" | tr ')' '\n' | awk '{print $2}' FS="('|')"
JUST A TRY:
tr ')' '\n' | awk '{print $2}' FS="('|')"
Damit werden die URLs übereinstimmen, die in Klammern und einfache Anführungszeichen erscheinen:
grep -Po "(?<=\(')http.*?mp3(?='\))"
Die URLs ausgegeben werden, eine pro Zeile, ohne Klammern oder einfache Anführungszeichen. Die -P
Option für Perl-kompatible reguläre Ausdrücke verfügbar ist (mindestens) in GNU und OS X grep
Versionen.