我所拥有的是一个 CSV 文件:
+------------+--------------+
| Category I | Sub-Category |
+------------+--------------+
| 1144 | 128 |
| 1144 | 128 |
| 1000 | 100 |
| 1001 | 100 |
| 1002 | 100 |
| 1002 | 100 |
| 1011 | 102 |
| 1011 | 102 |
| 1011 | 102 |
| 1011 | 102 |
| 1011 | 102 |
| 1011 | 102 |
| 1013 | 103 |
| 1013 | 103 |
| 1013 | 103 |
| 1013 | 103 |
| 1013 | 103 |
| 1013 | 103 |
| 1013 | 103 |
+------------+--------------+
我希望将上面的第一列和第二列连接起来形成第三个新列,带有一个新的任意标题,效果如下:
+-------------+--------------+-----------------------+
| Category ID | Sub-Category | Arbitrary New Heading |
+-------------+--------------+-----------------------+
| 1144 | 128 | 1144128 |
| 1144 | 128 | 1144128 |
| 1000 | 100 | 1000100 |
| 1001 | 100 | 1001100 |
| 1002 | 100 | 1002100 |
| 1002 | 100 | 1002100 |
| 1011 | 102 | 1011102 |
| 1011 | 102 | 1011102 |
| 1011 | 102 | 1011102 |
| 1011 | 102 | 1011102 |
| 1011 | 102 | 1011102 |
| 1011 | 102 | 1011102 |
| 1013 | 103 | 1013103 |
| 1013 | 103 | 1013103 |
| 1013 | 103 | 1013103 |
| 1013 | 103 | 1013103 |
| 1013 | 103 | 1013103 |
| 1013 | 103 | 1013103 |
| 1013 | 103 | 1013103 |
+-------------+--------------+-----------------------+
我通常的首选实用程序,csvkit 没有办法实现这一点,afaik - 请参阅https://github.com/wireservice/csvkit/issues/930。
什么是不需要高级编程知识的简单解决方案,可以实现这一点?
我模糊地意识到 awk 和 sed 是潜在的解决方案,但我不想将查询限制在那些以防万一有更好(即更简单)的解决方案的情况下。
该解决方案必须对非常大的文件有效,即包含 120,000+ 行。
编辑:为了方便那些想要破解它的人,我已经包含了示例数据;在这里下载:https ://www.dropbox.com/s/achtyxg7qi1629k/category-subcat-test.csv?dl=0
使用 Miller ( https://github.com/johnkerl/miller ) 和这个示例输入文件
并运行
你将会有
你也可以运行 csvsql,它可以通过这种方式运行
命令
输出