我目前正在运行各种基准测试并将必要的结果写入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
答案 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 ""}'