我正在尝试编写一个可以从大型html文件中提取信息的bashscript。我需要这个每天早上自动下载最新的报纸:)。 要下载最新报纸,我必须知道它的ID。为了得到它,我必须解析指向它的链接。 我设法提取行,用
保存带有awk的idawk '/show.php\?id=/' index.html
并获取
<a href="show.php?id=914826">Latest Newspaper</a>
所以我需要的是“914826”。这就是我被卡住的地方......我不认为我可以使用awk来提取整行,而不是片段。
期待您的回答。 提前致谢, 西蒙
答案 0 :(得分:2)
使用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/'
914826
答案 1 :(得分:1)
这个完整的awk
命令应该有效。对于与正则表达式匹配的行,请在=
和"
中进行拆分。在您的示例行中像这样拆分:
<a href=
show.php?id
914826
>Latest Newspaper</a>
所以打印第四个(arr[4]
):
awk '
/show.php\?id=/ {
split( $0, arr, /[="]/ );
print arr[4]
}
' index.html