![使用分隔符(逗号)将 CSV(一列)分成多列](https://linux22.com/image/209237/%E4%BD%BF%E7%94%A8%E5%88%86%E9%9A%94%E7%AC%A6%EF%BC%88%E9%80%97%E5%8F%B7%EF%BC%89%E5%B0%86%20CSV%EF%BC%88%E4%B8%80%E5%88%97%EF%BC%89%E5%88%86%E6%88%90%E5%A4%9A%E5%88%97.png)
我有一个 CSV,其中一列中有大约 50 个逗号分隔值,我想将它们分成单独的列。标题是第 1 行。这应该非常简单,我已经尝试了很多周围的方法awk
,mlr
但无法适应我所看到的任何内容,以便使用逗号作为分隔符将单个列分成多个列。
我的过程:
我曾经
mlr
将数百个 CSV 合并为一个 CSV:mlr --icsv cat *.csv > filename.txt mlr --ocsv unsparsify filename.txt > filename.csv
现在我有一个包含一列的 CSV;该列中有大约 50 个逗号分隔值,我想将它们分解为许多列。
答案1
您应该始终添加一些输入和输出示例文件。
我似乎已经明白你有一个这种类型的输入,一个 csv,其中一列包含一个 CSV (在此处的示例中,该a
字段)
A | 乙 | C |
---|---|---|
1,2,3 | 啊 | 啊 |
4,7,9 | FF | FF |
原始 CSV 是这样的:
a,b,c
"1,2,3",aa,aa
"4,7,9",ff,ff
使用米勒和嵌套动词,你可以运行
mlr --csv nest --explode --values --across-fields -f a --nested-fs "," input_01.csv > output.csv
具有
a_1 | a2 | a_3 | 乙 | C |
---|---|---|---|---|
1 | 2 | 3 | 啊 | 啊 |
4 | 7 | 9 | FF | FF |
原始输出是
a_1,a_2,a_3,b,c
1,2,3,aa,aa
4,7,9,ff,ff