首页 > 解决方案 > 如何将数据从一列拆分为多列?

问题描述

我有一个 csv 文件,其中一列中的所有数据都像

   A
8;a5747dfae47cccc8;7382625596;Anil;2017-08-07 16:51:58.753
9;a5747dfae47cccc8;7382625596;Anil;2017-08-07 17:21:11.416
10;a5747dfae47cccc8;7382625596;Anil;2017-08-07 17:41:09.771
11;a5747dfae47cccc8;7382625596;Anil;2017-08-07 18:01:22.448

而且我要

A    B                  C            D         E            
8   a5747dfae47cccc8  7382625596    Anil    2017-08-07 16:51:58.753
9   a5747dfae47cccc8  7382625596    Anil    2017-08-07 17:21:11.416
10  a5747dfae47cccc8  7382625596    Anil    2017-08-07 17:41:09.771
11  a5747dfae47cccc8  7382625596    Anil    2017-08-07 18:01:22.448

标签: csv

解决方案


如果你添加“A;B;C;D;E”,你就会得到你想要的:它是一个带有“;”的五列 CSV 作为字段分隔符

A;B;C;D;E
8;a5747dfae47cccc8;7382625596;Anil;2017-08-07 16:51:58.753
9;a5747dfae47cccc8;7382625596;Anil;2017-08-07 17:21:11.416
10;a5747dfae47cccc8;7382625596;Anil;2017-08-07 17:41:09.771
11;a5747dfae47cccc8;7382625596;Anil;2017-08-07 18:01:22.448

如果你想使用命令行,你必须删除第一行(我使用 sed)然后漂亮地打印你的输入(我使用 Miller https://github.com/johnkerl/miller

<input.csv sed -e '1,1d' | mlr --n2p --ifs ";" then label A,B,C,D,E

你将会有

A  B                C          D    E
8  a5747dfae47cccc8 7382625596 Anil 2017-08-07 16:51:58.753
9  a5747dfae47cccc8 7382625596 Anil 2017-08-07 17:21:11.416
10 a5747dfae47cccc8 7382625596 Anil 2017-08-07 17:41:09.771
11 a5747dfae47cccc8 7382625596 Anil 2017-08-07 18:01:22.448

推荐阅读