我正在尝试写一个bashscript,可以从一个大的html文件中提取信息。我需要它每天早上自动下载最新的报纸:)。要下载最新的报纸,我必须知道它的ID。为了获得它,我必须解析指向它的链接。我设法提取了保存带有awk的id的行
awk '/show.php\?id=/' index.html并获取
<a href="show.php?id=914826">Latest Newspaper</a>所以我需要的是"914826“。这就是我被困的地方..。我不认为我可以使用awk来提取整行代码,而是提取一个片段。
期待你的回答。提前谢谢你,西蒙
发布于 2012-07-02 18:58:59
这个完整的awk命令应该可以工作。对于与正则表达式匹配的行,在=和"中拆分。在您的示例行中像这样拆分:
第一个字段将是:<a href=
<a href=<a href=914826>Latest Newspaper</a>所以打印第四个(arr[4]):
awk '
/show.php\?id=/ {
split( $0, arr, /[="]/ );
print arr[4]
}
' index.html发布于 2012-07-02 18:25:24
使用grep
grep -o 'id=[0-9]*'示例:
$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | grep -o 'id=[0-9]*'
id=914826您可以使用perl或sed执行相同的操作:
$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | perl -pe 's/.*id=([0-9]*).*/$1/'
914826https://stackoverflow.com/questions/11291779
复制相似问题