【发布时间】:2014-03-16 17:01:49
【问题描述】:
DRLAncillary_2014-01-25.tgz 文件在 FTP 服务器主机 is.sci.gsfc.nasa.gov 上的远程目录 CompressedArchivedAncillary 下不存在。
如果我使用带有--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服务器主机is.sci.gsfc.nasa.gov上的远程目录CompressedArchivedAncillary下。
如果我使用带有--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 的最后一行: 尾 -2 /tmp/fileinfo.txt |头 -1
虽然这不是我进行简单文件存在检查的理想解决方案,但如果您的 bash 脚本专家可以帮我对我的 wget 命令行进行一些修改以回显终端窗口打印,我可以凑合它。
提前谢谢你!
【问题讨论】:
-
请更好地格式化您问题中的代码。
-
ctrl + k 在你的代码中
-
afaict
| tail -2 | head -1没有得到最后一行,而是最后一行之前的行