【问题标题】:Multiple whois lookup多个whois查询
【发布时间】:2020-11-02 05:14:29
【问题描述】:

我有以下用于 whois 查找的脚本

for line in $(cat ips.txt)
do
echo $line
whois $line | grep OrgName | awk '{print $2,$NF}' 
done

我有输出

192.168.1.1
Internet Authority

如何实现以下格式的输出?

192.168.1.2 : Internet Authority

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=焦点
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"

【问题讨论】:

  • 我不明白这种行为。您使用的是什么操作系统?也许像whois $line | grep OrgName | awk -v LINE=$line '{print $2,LINE}' 这样的东西是你想要的?
  • @user3783243 你的回答对我有用,但是为什么它提供了像我在问题中提到的那样的输出,如果我没有错,它不是预期的输出
  • 我没有在 Mac 上获得该输出。不知道在什么情况下会发生该输出。我可以发布我的解决方案,但这并不能回答为什么它的行为如此的问题。您可能需要为用户提供操作系统和版本以帮助解决该问题。
  • 可能ips.txt中有一些无法打印的字符(如\r)。你能用odhexdump 查一下吗?
  • @M.NejatAydin,也没有回车,我使用 hexdump 仔细检查了它。输出似乎不是故意的,我无法理解这种异常行为的原因

标签: bash for-loop whois


【解决方案1】:

在'echo $line' 行,shell 被要求打印$line 的值。外壳说好的 - 完成。 然后 shell 移动到下一行,基本上是说“获取字符串,然后通过管道将其传递给一些字符串操作并打印结果”。

我相信 shell 两次询问了“在屏幕上打印某些内容”,1 由 echo 2 由 awk 询问,它们来自 2 个单独的行,因此 shell 的行为符合预期。

为了防止这种情况,您可以在 $() 中包含第二行,这样 echo 将打印“$line + $(whatever come out here)”

for line in $(cat ips.txt)
do
echo $line : $(whois $line | grep OrgName | awk '{print $2,$NF}')
done

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多