天天看点

sed及awk提取影片下载地址

文件内容为

[root@extmail changename]# cat test

第01集 http://down.hjzlg.com/bthy/prc001ts.torrent

第02集 http://down.hjzlg.com/bthy/prc003ts.torrent

需求如下:

去除行首的汉字部分,保留下载地址部分。

方案一: 通过awk实现

[root@extmail changename]# cat test | awk '{print $2}'

http://down.hjzlg.com/bthy/prc001ts.torrent

http://down.hjzlg.com/bthy/prc003ts.torrent

<a href="http://down.hjzlg.com/bthy/prc004ts.torrent" target="_blank">http://down.hjzlg.com/bthy/prc004ts.torrent</a>

若想把空行也替换掉,则需加入sed管道,如下

[root@extmail changename]# cat test | awk '{print $2}' | sed /^$/d

其中awk '{print $2}'表示打印出每行中的第二个元素,sed /^$/d表示删除空行。

方案二:通过awk里的substr函数

[root@extmail changename]# cat test | awk '{print substr($0,length($1)+2)}' | sed /^$/d

awk '{print substr($0,length($1)+2)}'表示返回从第[length($1)+2]个字符开始的所有字符

sed /^$/d 表示删除空行

附注: substr(string,position,len) 返回string的一个以position开始len个字符的子串

方案三:通过awk结合正则实现

[root@extmail changename]# 

cat test|awk '{print gensub(/.*(http.*torrent).*/,"\\1","g",$0)}' |sed /^$/d

http://down.hjzlg.com/bthy/prc004ts.torrent

awk '{print gensub(/.*(http.*torrent).*/,"\\1","g",$0)}'表示匹配以http开头torrent结尾的字符串,g代表替换全部,$0表示当前行。  执行后即把当前行以http开头torrent结尾的字符串提取出来。

gensub函数以“,”作为分割符,共分为四部分。

本文转自 xoyabc 51CTO博客,原文链接:http://blog.51cto.com/xoyabc/1637242,如需转载请自行联系原作者