2014-06-18 164 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

您的逗號開頭,只是您已經從第一行開始打印吧 –