Shell 将CSV转换为列分隔值,但将值放在最右边

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

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