sed或awk捕获部分网址

时间:2013-10-20 03:12:26

标签: regex sed awk

我对正则表达式和sed / awk脚本编写不太熟悉。

我的网址类似于以下种子网址:

http://torcache.net/torrent/D7249CD9AF321C8578B3A7007ABBDD63B0475EEB.torrent?title=[kickass.to]against.the.ropes.by.carly.fall.epub.torrent

我希望 sed awk 脚本提取标题后的文字,即 从上面的例子中得到:

[kickass.to] against.the.ropes.by.carly.fall.epub.torrent

4 个答案:

答案 0 :(得分:5)

使用awk的简单方法:使用=作为字段分隔符:

awk -F"=" '{print $2}'

因此:

echo "http://torcache.net/torrent/D7249CD9AF321C8578B3A7007ABBDD63B0475EEB.torrent?title=[kickass.to]against.the.ropes.by.carly.fall.epub.torrent" | awk -F"=" '{print $2}'
[kickass.to]against.the.ropes.by.carly.fall.epub.torrent

答案 1 :(得分:3)

只需删除标题= sed 's/.*title=//'

之前的所有内容
$ echo "http://torcache.net/torrent/D7249CD9AF321C8578B3A7007ABBDD63B0475EEB.torrent?title=[kickass.to]against.the.ropes.by.carly.fall.epub.torrent" | sed 's/.*title=//'
[kickass.to]against.the.ropes.by.carly.fall.epub.torrent

答案 2 :(得分:3)

让我们说:

s='http://torcache.net/torrent/D7249CD9AF321C8578B3A7007ABBDD63B0475EEB.torrent?title=[kickass.to]against.the.ropes.by.carly.fall.epub.torrent'

纯BASH解决方案:

echo "${s/*title=}"
[kickass.to]against.the.ropes.by.carly.fall.epub.torrent

或使用grep -P

echo "$s"|grep -oP 'title=\K.*'
[kickass.to]against.the.ropes.by.carly.fall.epub.torrent

答案 3 :(得分:1)

使用sed(在示例中的regexp中无需提及title):

 sed 's/.*=//'

另一个解决方案是cut,另一个标准的unix工具:

 cut -d= -f2