DRLAncillary_2014-01-25.tgz
上的远程目录CompressedArchivedAncillary
下不存在 is.sci.gsfc.nasa.gov
文件。
如果我使用带有--spider
选项的wget命令来确定它的存在,则在终端窗口上显示以下输出行并流水线化到输出文件 /tmp/fileinfo.txt
wget --output-document=/dev/null --spider ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-25.tgz 2>&1 | tee /tmp/fileinfo.txt
==================================================================================
--2014-02-17 18:20:25-- ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-25.tgz
=> “/dev/null”
Resolving is.sci.gsfc.nasa.gov... 169.154.128.59
Connecting to is.sci.gsfc.nasa.gov|169.154.128.59|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /CompressedArchivedAncillary ... done.
==> SIZE DRLAncillary_2014-01-25.tgz ... done.
==> PASV ... done. --2014-02-17 18:20:29-- ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-25.tgz
=> “.listing”
==> CWD (1) /CompressedArchivedAncillary ... done.
==> PASV ... done. ==> LIST ... done.
0K .......... .......... .......... ... 35.6K=0.9s
Removed “.listing”.
No such file “DRLAncillary_2014-01-25.tgz”.
=============================================== ===================================
DRLAncillary_2014-01-15.tgz
文件确实存在于FTP服务器主机CompressedArchivedAncillary
上的远程目录is.sci.gsfc.nasa.gov
下。
如果我使用带有--spider
选项的wget命令来确定它的存在,则在终端窗口上显示以下输出行并流水线化到输出文件 /tmp/fileinfo.txt
wget --output-document=/dev/null --spider ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-15.tgz 2>&1 | tee /tmp/fileinfo.txt
==================================================================================
--2014-02-17 18:22:18-- ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-15.tgz
=> “/dev/null”
Resolving is.sci.gsfc.nasa.gov... 169.154.128.59
Connecting to is.sci.gsfc.nasa.gov|169.154.128.59|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /CompressedArchivedAncillary ... done.
==> SIZE DRLAncillary_2014-01-15.tgz ... 1811109782
==> PASV ... done. --2014-02-17 18:22:21-- ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-15.tgz
=> “.listing”
==> CWD (1) /CompressedArchivedAncillary ... done.
==> PASV ... done. ==> LIST ... done.
0K .......... .......... .......... ... 42.0K=0.8s
Removed “.listing”.
File “DRLAncillary_2014-01-15.tgz” exists.
==================================================================================
带有 - spider 选项的wget命令可以获取我想要的消息,并将它们存储到特定文件中。正如您从上面列出的两段中看到的那样,它们在顶部和底部分隔,并形成连续的等号线:
当搜索文件不存在时,输出的最后一行是
File “DRLAncillary_2014-01-15.tgz” exists
。
当搜索确实存在时,输出的最后一行读取
No such file “DRLAncillary_2014-01-25.tgz”.
=============================================== ===================================
所以我的问题是:
如何将wget输出重定向(使用管道运算符) 一个或多个支持过滤器的命令,如sed,grep,xargs,awk, tail等等,只从流中提取最后一行 缓冲区,而不是先将输出存储在固定文件中,然后 从该文件中读取最后一行?而且,我希望 提取的字符串将保存在变量中,我不指望 屏幕相当/清晰,而不是回应任何消息。
目前,我可以使用以下复合命令来获取 输出文件/tmp/fileinfo.txt中的最后一行: tail -2 /tmp/fileinfo.txt |头-1 -
虽然这不是我理想的简单文件存在检查解决方案,如果你的bash脚本大师们可以帮我做一些修改我的wget命令行来回显终端窗口打印,我可以用它
提前谢谢!
答案 0 :(得分:1)
抱歉,我不知道我是否理解了这个问题..但你试过了吗?
wget ... | awk '/^File/ {print}; /No such/ {print}';
root@stormtrooper:~# wget --output-document=/dev/null --spider ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-25.tgz 2>&1 | awk '/^File/ {print}; /^No such/{print}'
No such file ‘DRLAncillary_2014-01-25.tgz’.
root@stormtrooper:~# wget --output-document=/dev/null --spider ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-15.tgz 2>&1 | awk '/^File/ {print}; /^No such/{print}'
File ‘DRLAncillary_2014-01-15.tgz’ exists.
抱歉英语不好
答案 1 :(得分:0)
如果不通过文件,您是否只能通过head
和tail
进行管道传输:
wget --output-document=/dev/null --spider ftp://is.sci.gsfc.nasa.gov/CompressedArchivedAncillary/DRLAncillary_2014-01-15.tgz 2>&1 | tail -2 | head -1
答案 2 :(得分:0)
我如何将wget输出重命名(使用管道操作符)一个或多个启用过滤器的命令,如sed,grep,xargs,awk,tail等,以从流缓冲区中仅提取最后一行,而不先将输出存储在固定文件中,然后从该文件中读取最后一行?此外,我希望提取的字符串将保存在一个变量中,我不希望屏幕完全/清晰,而不是回显任何消息。
LAST_LINE=$(wget -O- http://URL 2> /dev/null | tail -1)