2013-10-20 94 views
0

我對正則表達式和sed/awk腳本不是很熟練。sed或awk捕獲url的一部分

我有類似於下面的洪流URL網址:

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

回答

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 
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
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 
1

通過使用sed(沒有必要提及在正規表達式title在您的示例):

sed 's/.*=//' 

cut另一個解決方案是另一種標準的unix工具:

cut -d= -f2