AWK使用多列写入CSV文件

时间:2014-06-18 14:20:42

标签: bash csv awk

我目前正在运行各种基准测试并将必要的结果写入csv文件。 但是当有一个结果要检查时,它工作得很好,现在我得到了很多结果,我想在csv文件中编写它们但有4列,然后转到下一个文件

#!/bin/bash
LOOPS="$1"
FILE="test.csv"
for ((COUNTER=1; COUNTER <= LOOPS; COUNTER++))
do
    echo "RUN $COUNTER"
    cryptsetup benchmark 2>&1 | grep "aes" | awk '{print $5}' >> $FILE
done

原始输出看起来像这样

#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   557.1 MiB/s  1832.1 MiB/s
 serpent-cbc   128b    65.0 MiB/s    75.1 MiB/s
 twofish-cbc   128b   122.0 MiB/s   155.0 MiB/s
     aes-cbc   256b   412.9 MiB/s  1422.5 MiB/s

当输出被分成四列而不是全部在一列

时会更容易

输出应该如下所示

1832.1 75.1 155.0 1422.5
1832.1 75.1 155.0 1422.5

2 个答案:

答案 0 :(得分:0)

Awk应该可以工作。

从第二行开始删除标题。 删除前导空格并将字段分隔符设置为3个空格,然后打印以逗号分隔的每个字段:)

awk -F "  " 'NR>1{gsub(/^[ \t]+|[ \t]+$/,""); print $1","$2","$3","$4}' test

答案 1 :(得分:0)

以下命令将输出以逗号分隔的一行中每行的第5列。

awk '(NR>1){printf ",";} {printf "%s",$5} END {print ""}'