如何从输出多个值的程序通过管道/重定向到仅接受一个值的程序,并对所有输出每次执行一次

发布于 2024-12-20 07:23:44 字数 409 浏览 1 评论 0原文

我正在尝试处理来自 traceroute 的 IP 地址,该地址写入磁盘上名为 td 的文件,之后我执行

grep -o '[0-9 ]\+\.[0-9]\+\.[0-9]\+\.[0-9]*[0-9]*[0-9]' td | uniq

获取唯一 IP 地址列表。 获取该地址的地理位置数据

接下来我可以通过lynx -dump http://api.hostip.info/get_html.php?ip=8.8.8.8

但是现在我如何提供多个输出将第一个文件转换为第二个文件,而无需写入磁盘上的另一个文件。

顺便说一句,我想知道是否可以完全删除文件 td 并以某种方式将 traceroute 输出直接传输到 grep

I am trying to process IP addresses from traceroute,which writes to a file called td on disk,after which I do a

grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]*[0-9]*[0-9]' td | uniq

to get the list of unique IP addresses. Next i can get the geolocation data for the address by

lynx -dump http://api.hostip.info/get_html.php?ip=8.8.8.8

But now how do I feed the multiple outputs of the first into the second without needing to write to another file on the disk.

As an aside I was wondering if i could remove the file td completely and pipe traceroute output directly to grep somehow.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尛丟丟 2024-12-27 07:23:44

您可以使用命令替换和 for 循环:

for ip in $(grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]*[0-9]*[0-9]' td | sort -u); do lynx -dump http://api.hostip.info/get_html.php?ip=$ip; done

另请注意,您的 uniq 可能无法工作,因为它期望对输入进行排序。相反,您可以使用 sort -u

You can use command substitution and a for loop as:

for ip in $(grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]*[0-9]*[0-9]' td | sort -u); do lynx -dump http://api.hostip.info/get_html.php?ip=$ip; done

Also note that your uniq might not work as it expects the input to be sorted. Instead you can use a sort -u.

那些过往 2024-12-27 07:23:44

您可以使用 shell for 循环吗?

for i in $(cat td)
do
  lynx -dump http:/...${i}
done

您可以将 $(cat td) 替换为 $(traceroute| grep -o '[0-9]\+\.[0-9]\+\.[ 0-9]\+\.[0-9]*[0-9]*[0-9]' | uniq) 以避免中间文件 td

Can you use a shell for loop?

for i in $(cat td)
do
  lynx -dump http:/...${i}
done

You can replace $(cat td) with $(traceroute <options> | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]*[0-9]*[0-9]' | uniq) to avoid the intermediate file td.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文