【问题标题】:Taking output from command and inserting into .csv file从命令获取输出并插入 .csv 文件
【发布时间】:2020-07-29 13:49:33
【问题描述】:

我需要这方面的帮助。

此命令通常返回 2 到 3 行输出。请参阅下面的 2 个示例

 # nc -z -w 5 -v server123.liar.com 1002
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection timed out.

# nc -z -w 5 -v server456.liar.com 1002
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.10.1.199:1002.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.

我需要将每一行输出作为 csv 文件的一行。我写了这个,但由于某种原因,它没有根据需要将输出插入到文件中。还可能需要有人确认这是否是写入 .csv 的正确方法

 #!/bin/bash
DATE=$(date +%F.%H%M)
FILENAME=nc_results-${DATE}
touch $FILENAME

for SERVER in $(cat my_server_list)
do
        CONNECTSTAT=$(nc -z -w 5 -v $SERVER 1002 | grep "Connect" | grep -v "Version" 2>&1 )
        echo $SERVER "," $CONNECTSTAT  >> $FILENAME
done

【问题讨论】:

    标签: linux bash shell csv


    【解决方案1】:

    删除不需要的变量和进程,永远不要使用for x in $(cat ...)

    #!/bin/bash
    while read server             # this loop reads from your list file
    do while read line            # this loop reads from each ncat execution
       do case "$line" in         # case replaces both grep calls
          *Version*) continue ;;  # skips Version, even if line also has Connect
          *Connect*) printf "%s,%s\n" "$server" "$line" ;; # prints formatted
          esac
       done < <( nc -z -w 5 -v $server 1002 2>&1 ) # feeds the inner loop
    done < my_server_list >> nc_results-$(date +%F.%H%M) # feeds outer, saves output
    

    read 可能比grep 慢,但我更喜欢case。 如果你不 -

    #!/bin/bash
    while read server             # this loop reads from your list file
    do nc -z -w 5 -v $server 1002 2>&1 | # you were only catching grep's errors
         sed -n "/Version/d; /Connect/{ s/^/$server,/; p; }" # 1 sed vs 2 grep 
    done < my_server_list >> nc_results-$(date +%F.%H%M) # feeds outer, saves output
    

    这可能更好。

    【讨论】:

    • 感谢您的回复。但我试过这个只是没有,似乎我们在某处缺少“}”,因为我从你的第二个建议 sed 中收到错误:-e 表达式 #1,字符 0:不匹配`{'
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多