UNIX-Shell bash ‚one-liner‘, um alle Klammern zu isolieren, eine URL enthält, die „mp3“ umfasst

StackOverflow https://stackoverflow.com/questions/4402342

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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top