我们的软件密码存储在网页中,并且喜欢这个:
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
,是否有更好的命令来解析密码?
答案 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
的管道中,但我会把它放在那里因为:
awk
将始终按照目前的方式行事。您会注意到管道中也不需要单独的wget
,因为grep
可以对其选择器做同样的事情。