Shell 将CSV转换为列分隔值,但将值放在最右边
Concept是一台运行debian的计算机,在检索数据时带有一个SH脚本文件 我搜索了如何将数据从csv转换回列和行。这相当容易。 例如,我有: 使用以下命令:column-t-s,>这将为我提供:Shell 将CSV转换为列分隔值,但将值放在最右边,shell,debian,cat,Shell,Debian,Cat,Concept是一台运行debian的计算机,在检索数据时带有一个SH脚本文件 我搜索了如何将数据从csv转换回列和行。这相当容易。 例如,我有: 使用以下命令:column-t-s,>这将为我提供: Date SkyT_Min SkyT_Min_Time SkyT_Max SkyT_Max_Time SkyT_Mean AmbT_Min AmbT_Min_Time AmbT_Max AmbT_Max_Time 2019-09-19 -22.8 07:29
Date SkyT_Min SkyT_Min_Time SkyT_Max SkyT_Max_Time SkyT_Mean AmbT_Min AmbT_Min_Time AmbT_Max AmbT_Max_Time
2019-09-19 -22.8 07:29:48.00 -1.6 12:27:57.00 -16.77 5.9 05:15:11.00 23.4 14:28:49.00
2019-09-25 -15.8 11:49:40.00 9.1 20:17:11.00 1.07 14.7 02:47:10.00 21.7 11:46:38.00
2019-09-26 -9.6 02:59:29.00 10.8 11:09:18.00 5.66 16.4 20:58:37.00 23.4 14:08:58.00
所以总的来说,这已经很好了
但是我如何让每列中的值从最右边开始,而不是从左边开始呢?
所以我会得到这样的结果:
非常感谢你的回答
更新:
我找到了我问题的答案:
但它给了我错误:无效选项-'R'
因此,如果有人有任何想法: 您可以使用awk:
-F告诉awk列分隔符
%20s告诉awk为每列保留20个字符,并为每个条目添加一个空格
注意:以后请避免截图,因为
awk -F "," '{for(i=1;i<=NF;i++){printf "%20s ", $i}; printf "\n"}' inputfile.csv
Date SkyT_Min SkyT_Min_Time SkyT_Max SkyT_Max_Time SkyT_Mean AmbT_Min AmbT_Min_Time AmbT_Max AmbT_Max_Time
2019-09-19 -22.8 07:29:48.00 -1.6 12:27:57.00 -16.77 5.9 05:15:11.00 23.4 14:28:49.00
2019-09-25 -15.8 11:49:40.00 9.1 20:17:11.00 1.07 14.7 02:47:10.00 21.7 11:46:38.00
2019-09-26 -9.6 02:59:29.00 10.8 11:09:18.00 5.66 16.4 20:58:37.00 23.4 14:08:58.00