如何使用bash获取网页并解析指定的行?

时间:2015-03-24 07:49:14

标签: bash shell

我们的软件密码存储在网页中,并且喜欢这个:

Last month: suilwoid 
This month: suewkhud 
Next month: guenkhid

我想写一个Bash脚本来获取本月的密码,简单的脚本就是这样:

wget http://passwd.xxx.com/~perf/passwd.php &
wait

echo `grep "This month" passwd.php | awk '{ print $3 }'`

这个脚本可以满足我的要求,但我想知道如何更优雅地实现这个脚本。

例如,是否可以使用管道来连接命令?除了awk,是否有更好的命令来解析密码?

1 个答案:

答案 0 :(得分:5)

您可以使用--output-document的{​​{1}}选项将文件写入标准输出,然后进行处理。

通常,文档是在与原始名称相似的磁盘上创建的,但您可以使用wget将它们全部连接到一个名为--output-document=blah的文件中。而且,如果您指定的文件名是blah,则表示将其发送到标准输出。

如下所示(在一行上)就足够了:

-

wget --quiet --output-document=- http://passwd.xxx.com/~perf/passwd.ph | awk '/This month/ {print $3}' 选项会阻止--quiet输出正常的内容,例如状态信息和进度。目前这是标准错误,因此不会包含在wget的管道中,但我会把它放在那里因为:

  1. 安静一般比吵闹更好。
  2. 我无法保证awk将始终按照目前的方式行事。
  3. 您会注意到管道中也不需要单独的wget,因为grep可以对其选择器做同样的事情。