Bash 用AWK修复演示文稿

Bash 用AWK修复演示文稿,bash,awk,geoip,Bash,Awk,Geoip,我正在创建一个小脚本,用于读取包含域列表的文件的内容。然后通过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 $doma

我正在创建一个小脚本,用于读取包含域列表的文件的内容。然后通过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
关于如何整理我的演讲有什么想法吗

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

编辑:

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

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

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

helloworld.com
rubyonrails.org
sublimetext.com
gnu.org
挖掘输出:

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$ 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 
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 
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 
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 

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

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

公平警告:由于缺少软件,我还没有测试过它。

如果我得到正确的结果,您希望对输入文件中的所有IP运行
dig
命令。如果是这种情况,那么您能否在您的帖子中提及输入文件的虚拟样本(带IP)和
dig
输出的虚拟样本(用于1 IP和最终总输出),然后让我们知道?我不明白
…|tr…>>Blacklist.csv | geoiplookup
>
|
的组合真的是你想要的吗?请在你的帖子中发布你的样本(文本),不要以图片或链接的形式发布@NigerianWizard@RavinderSingh13样品posted@NigerianWizard,好的,让我重新表述一下。您有一个域列表,您正在传递或希望传递到
dig
以获取其IP。一旦你得到了它们,你就把它们传递给
geoiplookup
;您在重新分配其输出时面临的问题,我说的对吗?如果是,那么您可以简单地告诉我们
非期望输出
,然后
期望输出
,因为您的帖子中仍然不清楚。因为您的预期输出中缺少某个ip或某个国家/地区,所以不清楚,请提供更多详细信息。@NigerianWizard,请您尝试一下上面的内容并告诉我好吗?如果这不起作用,那么将
dig+short$domain | tr'\n'>>Blacklist.csv | geoiplookup$domain
的输出也粘贴一次?