2

私はこの Unix の bash についてまったくの初心者です — ここで最初の質問です! 皆さんが助けてくれることを願っています:)

問題:

次の複数の出現を含む、大量の乱雑な Web ソース コード (ラッピング/未フォーマット) があります。

('http://www.example.com/path/audio.mp3')

".mp3" を含む URL を含むかっこのこれらの発生を分離し、先頭/末尾の " () " および " ' " 文字をきれいにしてから、アクティブな .txt ファイルにリスト (1 行に 1 つ) として出力します。

注:ワンライナーは、Mac 上の Automator で、「選択したテキスト」に対するアクションのサービス/ワークフローとして使用されます。

(すべてのオンラインのツットをトロールしているにもかかわらず)私は完全に迷っているので、どんな助けも大歓迎です。

よろしくお願いします、

デイブ

4

5 に答える 5

4

egrepwith (一致する部分のみを出力)を使用すると-o、うまくいくはずです。次のようなものを試してください。

egrep -o "http://[^'\"]+.mp3" FILENAME
于 2010-12-09T19:55:46.303 に答える
0

Macが持つべきPERL。

#!/usr/bin/perl
while(<STDIN>)
{
    $_ =~ /.*(http:\/\/.*\.mp3).*/;
    print $1 . '\n';
}
于 2010-12-09T19:48:20.177 に答える
0

以下を改良してみてください。

perl -ne $'while(/\(\'(http:\/\/[\w.\/]+?\.mp3)\'\)/g) { print "$1\n"; }' < input_file > output_file

input_file一度に 1 行ずつstdin (ここ: ) を読み取り、その行に出現するすべての「url」を探し、それを stdout (ここ: output_file) なし('で出力し')ます。

于 2010-12-09T19:49:25.240 に答える
0

awk '{print $2}' FS="('|')" < filename

cat filename | tr ')' '\n' | awk '{print $2}' FS="('|')" > output.txt

Just replace filename with the name of your file containing these lines..

OR

echo "your multiline\
text here" | tr ')' '\n' | awk '{print $2}' FS="('|')"

JUST A TRY:

tr ')' '\n' | awk '{print $2}' FS="('|')"

于 2010-12-09T19:44:52.107 に答える
0

これは、括弧と一重引用符で囲まれた URL に一致します。

grep -Po "(?<=\(')http.*?mp3(?='\))"

URL は、括弧や一重引用符なしで、1 行に 1 つずつ出力されます。Perl 互換の正規表現の-Pオプションは、(少なくとも) GNU および OS Xgrepバージョンで利用できます。

于 2010-12-10T10:13:51.903 に答える