如何使用 BASH 将 .txt 文件数据存储在 CSV 文件的不同列中?

pal*_*ing 1 scripting bash csv files text

我有一个具有以下数据结构的 .txt 文件:

Scan Times:
 33.3 seconds
 77.4 seconds
 33.3 seconds
 77.4 seconds

Check Times:
 110.30 seconds
 72.99 seconds
 72.16 seconds
 110.30 seconds

Move Times:
 73.66 seconds
 90.77 seconds
 72.87 seconds
 71.75 seconds
 
Switch Times:
 92.0 seconds
 78.6 seconds
 77.8 seconds
 84.9 seconds
Run Code Online (Sandbox Code Playgroud)

我现在想要获取该 .txt 文件并创建一个具有以下格式的 CSV 文件。

在此处输入图片说明

到目前为止,我的 bash 脚本有一个非常基本的布局,但我不确定如何继续:

inputFiles=("./Successes/SuccessSummary.txt" "./Failures/FailSummary.txt")
touch results.csv

for file in "${inputFiles[@]}"
do 
    while IFS= read -r line
    do
        #echo $line
        if [ "$line" = "Scan Times:" ]
        then 
        fi

        if [ "$line" = "Check Times:" ]
        then 
        fi

        if [ "$line" = "Move Times:" ]
        then 
        fi
        
        if [ "$line" = "Switch Distances:" ]
        then 
        fi
    done < "$file"
done
Run Code Online (Sandbox Code Playgroud)

nez*_*dka 5

pr -4T file
Run Code Online (Sandbox Code Playgroud)
Scan Times:   Check Times:      Move Times:       Switch Times:
 33.3 seconds      110.30 seconds    73.66 seconds     92.0 seconds
 77.4 seconds      72.99 seconds     90.77 seconds     78.6 seconds
 33.3 seconds      72.16 seconds     72.87 seconds     77.8 seconds
 77.4 seconds      110.30 seconds    71.75 seconds     84.9 seconds

Run Code Online (Sandbox Code Playgroud)

每列中的空行也将显示。
以前,您可以对文本进行必要的更改,例如,使用sed

Scan Times:   Check Times:      Move Times:       Switch Times:
 33.3 seconds      110.30 seconds    73.66 seconds     92.0 seconds
 77.4 seconds      72.99 seconds     90.77 seconds     78.6 seconds
 33.3 seconds      72.16 seconds     72.87 seconds     77.8 seconds
 77.4 seconds      110.30 seconds    71.75 seconds     84.9 seconds

Run Code Online (Sandbox Code Playgroud)
Scan Times:   Check Times:  Move Times:   Switch Times:
 33.3          110.30        73.66         92.0
 77.4          72.99         90.77         78.6
 33.3          72.16         72.87         77.8
 77.4          110.30        71.75         84.9
Run Code Online (Sandbox Code Playgroud)

补充:
应该记住,该实用程序是为打印而创建的,并且具有许多不完全适合此类情况的默认标志。
-T消除分页并省略页眉和页尾。
-wN设置页面宽度。(默认:)-w 72

添加2:
或者如何将每一行写入awk数组的示例:

sed '/^\s*$/d;s/seconds//' file | pr -4T
Run Code Online (Sandbox Code Playgroud)
 Scan Times:Check Times: Move Times:Switch Times:
        33.3      110.30       73.66        92.0
        77.4       72.99       90.77        78.6
        33.3       72.16       72.87        77.8
        77.4      110.30       71.75        84.9
Run Code Online (Sandbox Code Playgroud)