ptr*_*cao 0 sed awk csv csvkit
我有一个 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 |
+------------+--------------+
Run Code Online (Sandbox Code Playgroud)
我希望将上面的第一列和第二列连接起来,以形成具有新的任意标题的第三列新列,以达到以下效果:
+-------------+--------------+-----------------------+
| 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 |
+-------------+--------------+-----------------------+
Run Code Online (Sandbox Code Playgroud)
我通常的首选实用程序 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 ) 和这个示例输入文件
Category ID,Sub-Category
1001,128
1002,127
1002,126
1004,122
Run Code Online (Sandbox Code Playgroud)
和跑步
mlr --csv put -S '$fieldName=${Category ID}." ".${Sub-Category}' input.csv >output.csv
Run Code Online (Sandbox Code Playgroud)
你将会有
+-------------+--------------+-----------+
| Category ID | Sub-Category | fieldName |
+-------------+--------------+-----------+
| 1001 | 128 | 1001 128 |
| 1002 | 127 | 1002 127 |
| 1002 | 126 | 1002 126 |
| 1004 | 122 | 1004 122 |
+-------------+--------------+-----------+
Run Code Online (Sandbox Code Playgroud)
你也可以运行 csvsql,它以这种方式工作
csvsql -I --query 'select *,("Category ID" || " " || "Sub-Category") fieldname from input' input.csv >output.csv
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
446 次 |
最近记录: |