2012-03-07 5 views
5

私はsedをURLの最後の部分にマッチさせて、それだけを出力しようとしています。たとえば:sedとregexを使ってURLの最後の部分を取得する

echo "http://randomurl/suburl/file.mp3" | sed (expression)

は、出力を与える必要があります。

file.mp3

をこれまでのところ、私はsed 's|\([^/]+mp3\)$|\1|g'を試みたが、それは単に全体のURLを出力します。多分私はここに見ていない何かがあるが、とにかく、助けが大いに感謝されるだろう!

答えて

11

この作品:

echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##' 
+0

ありがとうございました!それはそれを解決:) – glindste

+2

あなたはそれが何を詳述できますか? – nass

3

これは、ジョブを実行する必要があります。

$ echo "http://randomurl/suburl/file.mp3" | sed -r 's|.*/(.*)$|\1|' 
file.mp3 

  • |sコマンドの引数を区切るために代わり/のに使用されています。
  • すべてが一致し、最後に/の後に見つかったもので置き換えられます。

編集:あなたはまた、bashのparameter substitution機能を使用することができます。

$ url="http://randomurl/suburl/file.mp3" 
$ echo ${url##*/} 
file.mp3 
6

basenameはあなたの良い友人です。

> basename "http://randomurl/suburl/file.mp3" 
=> file.mp3 
+0

それは本当に便利です、ありがとう:) – glindste

2
echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$' 

ここgrepを使用して、別の解決策です。

関連する問題