使用分隔符(逗号)将 CSV(一列)分成多列

使用分隔符(逗号)将 CSV(一列)分成多列

我有一个 CSV,其中一列中有大约 50 个逗号分隔值,我想将它们分成单独的列。标题是第 1 行。这应该非常简单,我已经尝试了很多周围的方法awkmlr但无法适应我所看到的任何内容,以便使用逗号作为分隔符将单个列分成多个列。

我的过程:

  1. 我曾经mlr将数百个 CSV 合并为一个 CSV:

    mlr --icsv cat *.csv > filename.txt
    mlr --ocsv unsparsify filename.txt > filename.csv
    
  2. 现在我有一个包含一列的 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

相关内容