2016-02-04 63 views
1

目前,我得到NS(Name Server)記錄的循環方式的域列表。Shell:將輸入行子集添加到前綴挖輸出

#ns_check.sh 
for i in $(cat Input.txt);do dig +short NS $i;done 

輸入文件只有域。

#Input.txt 
example.com 
hello.com 
blah.com 

我得到的輸出,

#Out.txt 
    ns4.p05.dynect.net. 
    ns2.p05.dynect.net. 
    ns1.p05.dynect.net. 
    ns3.p05.dynect.net. 
    ns-315.awsdns-39.com. 
    ns-564.awsdns-06.net. 
    ns-1162.awsdns-17.org. 
    ns-1949.awsdns-51.co.uk. 
    a3.verisigndns.com. 
    u1.verisigndns.com. 
    a2.verisigndns.com. 
    a1.verisigndns.com. 
    u2.verisigndns.com. 
    u3.verisigndns.com. 

現在,我想有我INPUT.TXT作爲

#Input.txt 
    1,example.com 
    2,hello.com 
    3,blah.com 

產量要像,

#Out.txt 
     1,ns4.p05.dynect.net. 
     1,ns2.p05.dynect.net. 
     1,ns1.p05.dynect.net. 
     1,ns3.p05.dynect.net. 
     2,ns-315.awsdns-39.com. 
     2,ns-564.awsdns-06.net. 
     2,ns-1162.awsdns-17.org. 
     2,ns-1949.awsdns-51.co.uk. 
     3,a3.verisigndns.com. 
     3,u1.verisigndns.com. 
     3,a2.verisigndns.com. 
     3,a1.verisigndns.com. 
     3,u2.verisigndns.com. 
     3,u3.verisigndns.com. 

如何添加輸入ID到獲得的每個NS記錄的輸出?新的shell腳本,關於如何解決這個問題的任何建議?

回答

1

您可以使用此while循環:

while IFS=, read -r n h; do 
    printf "$n,%s\n" $(dig +short NS "$h") 
done < input.txt 
  • IFS=, read -r n h將讀取每個逗號分隔的行成2個變量n(數量)和h(主機)。
  • printf "$n,%s\n" $(dig +short NS "$h")將在命令的輸出中替換$n,的每行開頭。
+1

謝謝@anubhava修復了這個問題。 – Arun