【发布时间】: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 文件。我该怎么做?
|日期|发送字节|接收字节|
【问题讨论】:
~]$ date;daemon -ip 统计数据 | grep 字节
Fri Jun 22 13:58:37 +08 2018
1958391001 transmit bytes
1825330799 receive bytes
我想将这些值通过管道传输到下面提到的 CSV 文件。我该怎么做?
|日期|发送字节|接收字节|
【问题讨论】:
喜欢这个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)}'
【讨论】:
如果您将命令的输出通过管道传输到 tr 以便用分隔符替换换行符,即
....|tr '\n' '|'
除了开头的| 之外,您几乎已经完成了整个字符串。因此,如果您将此字符串存储到变量中,即
v=$(.....|tr '\n' '|')
您可以将其附加到您的 csv 文件中
echo "|$v" >>your_file.csv
【讨论】: