2014-06-18 69 views
0

我目前正在运行各种基准并将必要的结果写入csv文件。 但是它的工作伟大的,当有一个结果来检查,现在我得到了很多成绩,我想给他们写在csv文件,但有4列,然后移动到下一个文件AWK使用多列写入CSV文件

#!/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 
+0

它已经在我认为的四列。你想删除号码和MiB/s之间的空格吗? –

+0

对不起,代码改正后应该看第5列,输出只有一列 – user3694354

+0

作为例子,在reults中显示的更多,只是排除了它,所以很清楚我希望它看起来像 – user3694354

回答

0

awk应该可以工作。

从第二行开始删除标题。 移除前导空白和集字段分隔符,以3位,然后打印用逗号:)

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

下面的命令分隔每个场将在同一行的每一行的输出第五列由逗号分隔。

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

'awk'NR> 1 {printf“,%s”,$ 5} END {print“”}'test' –

+0

@Jidder,您的评论输出将以“,”开头。 – kamae

+0

您的逗号开头,只是您已经从第一行开始打印吧 –