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)
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)