【发布时间】:2014-08-08 14:33:25
【问题描述】:
我有许多独立运行的命令。以下 5 个 awk 命令当前输出所需的数据,以逗号分隔。我想将以下所有 awk 输出组合在一起,以便将它们呈现在一个 csv 文件中,但我运气不佳。
以下命令只是搜索包含特定单词的行,并提取必填字段的输出。例如.. 我希望第一个命令的 $4,$5,$6,$7,$8,$9 填充前 6 列,然后在接下来的 2 列中从第二个命令输出 $2,$4。
awk '/start/ { print $4,$5,$6,$7,$8,$9 }' 07.08.2014.txt | sed -e "s/ /,/g"
awk '/PacketLoss/ { print $2,$4 }' 07.08.2014.txt | sed -e "s/ /,/g"
awk '/PacketOutOfSequence/ { print $2,$4,$6 }' 07.08.2014.txt | sed -e "s/ /,/g"
awk '/JitterSD/ { print $3,$6,$9 }' 07.08.2014.txt | sed -e "s/ /,/g"
awk '/NumOfRTT/ { print $2,$4,$6,$8 }' 07.08.2014.txt | sed -e "s/ /,/g"
输入数据示例
Aggregation start time 11:45:47.893 BST Thu Aug 7 2014
NumOfRTT: 360000 RTTAvg: 145 RTTMin: 144 RTTMax: 171
PacketLossSD: 0 PacketLossDS: 0
PacketOutOfSequence: 3 PacketMIA: 0 PacketLateArrival: 0
Jitter Avg: 1 JitterSD Avg: 1 JitterDS Avg: 1
示例输出
11:45:47.893,BST,Thu,Aug,7,2014,0,0,3,0,0,1,1,1,360000,145,144,171
将每列标记如下也很好,但如果太复杂,这并不重要,因为我可以手动完成
START_TIME,BST,DAY,MONTH,DATE,YEAR,PacketLossSD,PacketLossDS,PacketOutOfSeq,PacketMIA,PacketLateArrival,JitterAvg,JitterSD_Avg,JitterSD_Avg,NumOfRTT,RTTAvg,RTTMin,RTTMax
11:45:47.893,BST,Thu,Aug,7,2014,0,0,3,0,0,1,1,1,360000,145,144,171
提前感谢您的帮助:)
【问题讨论】:
-
您的输出与您的输入不匹配。而且您的列标签也不匹配。 (您的 PacketLossSD 为 2。)
-
很好发现..我有正确的..谢谢