Использование sed и regex для захвата последней части URL - PullRequest
6 голосов
/ 07 марта 2012

Я пытаюсь, чтобы sed соответствовал последней части URL и выводил только это. Например:

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

должен дать вывод:

file.mp3

До сих пор я пытался sed 's|\([^/]+mp3\)$|\1|g', но он просто выводит весь URL. Может быть, я что-то здесь не вижу, но в любом случае, помощь будет очень признательна!

Ответы [ 4 ]

13 голосов
/ 07 марта 2012

это работает:

 echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##'
7 голосов
/ 07 марта 2012

basename ваш хороший друг.

> basename "http://randomurl/suburl/file.mp3"
=> file.mp3
3 голосов
/ 07 марта 2012

Это должно сделать работу:

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

где:

  • | используется вместо / для разделения аргументов команды s.
  • Все сопоставляется и заменяется на что угодно, если оно найдено после последнего /.

Редактировать: Вы также можете использовать bash Подстановка параметров Возможности:

$ url="http://randomurl/suburl/file.mp3"
$ echo ${url##*/}
file.mp3
2 голосов
/ 07 марта 2012
echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$'

Вот еще одно решение с использованием grep.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...