【问题标题】:How can I pipe a command output to a CSV file in shell?如何将命令输出通过管道传输到 shell 中的 CSV 文件?
【发布时间】:2018-06-22 06:04:48
【问题描述】:

~]$ date;daemon -ip 统计数据 | grep 字节

Fri Jun 22 13:58:37 +08 2018
1958391001 transmit bytes
1825330799 receive bytes

我想将这些值通过管道传输到下面提到的 CSV 文件。我该怎么做?

|日期|发送字节|接收字节|

【问题讨论】:

    标签: python shell scripting


    【解决方案1】:

    喜欢这个awk:

    daemon -ip statistics data | awk -v d="$(date)" '/transmit bytes/{t=$1} /receive bytes/{print "|" d "|" t "|" $1 "|"}' 
    

    输出

    |Fri 22 Jun 2018 08:29:45 BST|1958391001|1825330799|
    

    或者,如果您更喜欢 printf 样式的格式:

    daemon -ip statistics data | awk -v d="$(date)" '/transmit bytes/{t=$1} /receive bytes/{printf("|%s|%d|%d|\n",d,t,$1)}'
    

    【讨论】:

      【解决方案2】:

      如果您将命令的输出通过管道传输到 tr 以便用分隔符替换换行符,即

      ....|tr '\n' '|'
      

      除了开头的| 之外,您几乎已经完成了整个字符串。因此,如果您将此字符串存储到变量中,即

      v=$(.....|tr '\n' '|')
      

      您可以将其附加到您的 csv 文件中

      echo "|$v" >>your_file.csv
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-18
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多