【问题标题】:Fixing presentation with AWK使用 AWK 修复演示文稿
【发布时间】:2019-03-07 12:53:16
【问题描述】:

我正在创建一个小脚本来读取包含域列表的文件的内容。然后通过 dig +short 对域进行管道传输以提取其 IP 地址,然后通过 geoiplookup 对每个 IP 进行管道传输以获取其原籍县,并使用 AWK 以以下格式显示它们:

IP Address , Country
IP Address , Country
IP Address , Country
IP Address , Country
IP Address , Country

for domain in $(cat "$1"); do dig +short $domain | tr '\n' ' ' >> Blacklist.csv | geoiplookup $domain | awk 'NR==1{print ","$5,$6,$7,$8}' >> Blacklist.csv ; done

现在,我遇到了显示在底部的第一个 IP 地址的问题,如下所示:

           , Country
IP Address , Country
IP Address , Country
IP Address , Country
IP Address , Country
IP Address

关于如何整理我的演示文稿有什么想法吗?

================================================ =========================

编辑:

Running Script

Output CSV - 如您所见,单元格 A1 中的 IP 地址已错误地放置在单元格 A5 中

编辑 2:示例 输入文件 - 包含域列表的文本文件:

helloworld.com
rubyonrails.org
sublimetext.com
gnu.org

DIG 输出:

ryan@ubuntu:~/Desktop$ for domain in $(cat stackdemo.txt); do dig +short $domain ; done
69.25.240.212
185.199.108.153
45.55.41.223
209.51.188.148

最终组合输出:

ryan@ubuntu:~/Desktop/Demo$ cat Blacklist.csv 
,United States  
69.25.240.212 ,Netherlands   
185.199.108.153 ,United States  
45.55.41.223 ,United States  
209.51.188.148

================================================ =========================

非期望输出

ryan@ubuntu:~/Desktop/Demo$ cat Blacklist.csv 
,United States  
69.25.240.212 ,Netherlands   
185.199.108.153 ,United States  
45.55.41.223 ,United States 

209.51.188.148

期望的输出

ryan@ubuntu:~/Desktop/Demo$ cat Blacklist.csv 
209.51.188.148 ,United States  
69.25.240.212 ,Netherlands   
185.199.108.153 ,United States  
45.55.41.223 ,United States 

【问题讨论】:

  • 如果我理解正确,您想为 Input_file 中的所有 ip 运行 dig 命令。如果是这种情况,那么您能否在您的帖子中提及 input_file(带有 ips)的虚拟样本和 dig 输出的虚拟样本(对于 1 个 IP 和最终总输出),然后让我们知道?
  • 我不明白... | tr ... >> Blacklist.csv | geoiplookup>>| 的组合真的是你想要的吗?
  • 请在您的帖子中发布您的示例(作为文本),请勿以图片或链接的形式发布它们,请@NigerianWizard
  • @RavinderSingh13 发布示例
  • @NigerianWizard,好的,让我重新措辞一下。您有您正在传递或想要传递给dig 以获取其 ips 的域列表。一旦你得到那些你把它们传递给geoiplookup;您在重新安排其输出时面临哪些问题,对吗?如果是,那么您可以简单地告诉我们NON desired output 然后Desired output,因为您的帖子中仍然不清楚。因为在您的预期输出中缺少某个 ip 或某个国家/地区所以不清楚,请提供更多详细信息。

标签: bash awk geoip


【解决方案1】:

我仍然不完全清楚,假设您的 dig 命令和您的 geoiplookup 命令不会给出空输出,如果是这种情况,请尝试。

while read line
do
   dig "$line" > "dig_output"
   geoiplookup "$line" > "lookup_output"
done < "domain_file"

现在合并输出:

paste -d"," "dig_output"  "lookup_output"

公平警告:由于缺少软件,我没有对其进行测试。

【讨论】:

  • @NigerianWizard,您能在上面尝试一次并告诉我吗?如果这不起作用,那么也将dig +short $domain | tr '\n' ' ' &gt;&gt; Blacklist.csv | geoiplookup $domain 的输出粘贴一次?
猜你喜欢
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
相关资源
最近更新 更多