【问题标题】:Shell : Add input lines subset to prefix dig outputShell:将输入行子集添加到前缀 dig 输出
【发布时间】:2016-05-14 11:01:48
【问题描述】:

目前,我以循环方式获取域列表的NS(Name Server) 记录。

 #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脚本新手,有什么建议可以解决这个问题吗?

【问题讨论】:

    标签: bash shell dig


    【解决方案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") 将替换 dig 命令输出中以 $n, 开头的每一行。

    【讨论】:

    • 谢谢@anubhava 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2019-10-11
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多