我的桌面上有一个很大的html文件,看起来像
src="http://images.alaablubnan.com/images/Balls/20.jpg"
alt="http://images.alaablubnan.com/images/Balls/20.jpg"/></a></td><td><a
href="http://images.alaablubnan.com/images/Balls/32.jpg"
target="_blank"><img
src="http://images.alaablubnan.com/images/Balls/32.jpg"
alt="http://images.alaablubnan.com/images/Balls/32.jpg"/></a></td><td><a
href="http://images.alaablubnan.com/images/Balls/30.jpg"
target="_blank"><img
src="http://images.alaablubnan.com/images/Balls/30.jpg"
alt="http://images.alaablubnan.com/images/Balls/30.jpg"/></a></td></tr><tr><td><table><tr><td>webpage/url</td><td>http://www.playlebanon.com/webservices/website/lotto/PopUps/HistoryDetail.aspx?t=1405536730503&FromDraw=1&ToDraw=1213&Draw=0</td></tr></table></td><td>2</td><td>complete
lotto results</td><td>complete lotto results</td><td>2</td><td><a
href="http://www.playlebanon.com/webservices/website/lotto/PopUps/HistoryDetail.
如果可能,我要:
这实际上并不是一项特别好的工作,sed
但是可以这样做:
sed -nr 's#.*/([^"]+).jpg.*#\1#p' file
上面将为您提供数字列表,每行一个:
20
20
32
32
32
30
30
30
现在,实际上可以将所有这些都使用在同一行上,每行使用7个数字,sed
但这确实不值得付出努力。只需使用标准的* nix工具即可:
$ echo $(sed -nr 's#.*/([^"]+).jpg.*#\1#p' file | tr $'\n' ' ') | fold -sw 21
20 20 32 32 32 30 30
30
或者,如果您要删除重复项,请执行以下操作:
echo $(sed -nr 's#.*/([^"]+).jpg.*#\1#p' file | sort -u | tr $'\n' ' ')
20 30 32
该sed
命令使用一些技巧:
-n
:默认情况下不打印任何行。-r
:启用扩展的正则表达式,这使我们( )
可以捕获组而无需转义括号和+
“一个或多个”。s#from#to#
::sed
和其他类似工具中的标准替换运算符是时s/from/to/
,您可以使用非标准定界符,以便可以将其包括/
在模式中。在这种情况下,我正在使用,#
但是您也可以使用其他类似的东西s|from|to|
。s#.*/([^"]+).jpg.*#\1#p
:这将匹配从行首到a的所有内容/
,然后捕获最长的非"
字符段直到.jpg
。这是文件名减去扩展名。文件.*
名将在括号中捕获,并且整行(由于两边都用)将被捕获的模式(\1
)代替。所述p
在端部是指,将打印其中取代是成功的行。不过,就我个人而言,我首先要做的就是所有这些perl
:
$ perl -e '@k=grep(s/.*\/([^"]+).jpg.*/$1/s,<>); print "@k[0..6]\n@k[7..$#k]\n"' file
20 20 32 32 32 30 30
30
或者,对于较大的文件:
$ perl -e '@k=grep(s/.*\/([^"]+).jpg.*/$1/s,<>); for($i=0;$i<=$#k;$i+=7){print "@k[$i..$i+7]\n"}' file
20 20 32 32 32 30 30 30
30
或grep
甚至:
$ echo $(grep -oP '[^/]+(?=.jpg)' file | tr $'\n' ' ' ) | fold -w 21
20 20 32 32 32 30 30
30
或者,窃取@Olli的聪明xargs
主意:
$ grep -oP '[^/]+(?=.jpg)' file | xargs -n7 echo
20 20 32 32 32 30 30
30
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句