shell - 将 CSV 转换为列分隔值,但将值放在最右边
问题描述
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
PS:以后请不要截图,因为没人喜欢。
推荐阅读
- javascript - 无法从 redux 存储分派状态值
- python - 迭代包括素数在内的数字
- php - "message": "未定义属性:Illuminate\\Database\\Query\\Builder::$token"
- python - 将 ace.js 编辑器的内容写入 Django 中的文件
- sql - T-SQL - 为每个组转出不同的 N 行
- mockito - 重载方法的 Mockito.Any 问题
- google-apps-script - 通过 Workspace Add-On 更改可见性设置后更新 Google 日历 UI
- python-3.x - Dask:像熊猫一样将列表添加到列值
- node.js - Google OAuth 2.0 不调用回调函数
- list - 从两个分配一个项目?