shell - 如何选择垂直列到水平列?
问题描述
我有一个文件 txt,其数据如下:
k1|k2|k3
1|65|98
2|42|55
3|21|56
4|76|89
5|34|93
6|78|22
我想像这样转换数据:
k1|1|2|3|4|5|6
k2|65|42|21|76|34|78
k3|98|55|56|89|93|22
任何帮助都可以给我很好的教训。顺便说一句,我是编码新手,我想学习 shell 脚本。谢谢你
解决方案
使用GNU datamash 让它变得微不足道:
$ datamash -t'|' transpose < input.txt
k1|1|2|3|4|5|6
k2|65|42|21|76|34|78
k3|98|55|56|89|93|22
推荐阅读
- linux - 复制或移动结合源路径和目标路径,以避免重复长路径
- jsf - JSF 面临流抛出错误“流已存在”
- active-directory - 如何确保存储在数据库中的管理员密码的安全性以与 LDAP 同步
- excel - Excel VBA 组合框值条件
- php - 使用 Where AND OR 从表中获取所有数据
- sql-server - 将 OFFSET 和 FETCH NEXT 应用于现有存储过程
- c# - Visual Studio:从测试资源管理器运行测试时默认排除项目
- javascript - Javascript:单击时幻灯片不幻灯片
- dynamic - 正确使用 ToObservableChangeSet 动态数据 reactiveui
- c - 用clock()计算平均时间