【发布时间】:2019-05-12 01:55:16
【问题描述】:
我有一个如下所示的 CSV 文件 (test.csv):
WH_01,TRAINAMS,A10,1221-ESD
WH_03,TRAINLON,L10A3,3005-21
WH_01,TRAINAMS,A101,PWR-120
WH_02,TRAINCLE,A1,074-HD-SATA
WH_01,TRAINAMS,A10,PWR-120
WH_02,TRAINCLE,A15,102-55665
WH_03,TRAINLON,L10A3,3005-20
WH_03,TRAINLON,UK-B3,101859
1)。我可以根据第 2 列中的值对文件进行排序,如下所示:
sort -t, -k2,2 test.csv > testsort.csv
2)。接下来我想根据第 2 列中的值拆分文件。使用上面的示例,它应该创建 3 个文件:
testsort_1.csv:
WH_01,TRAINAMS,A10,1221-ESD
WH_01,TRAINAMS,A101,PWR-120
WH_01,TRAINAMS,A10,PWR-120
testsort_2.csv:
WH_02,TRAINCLE,A1,074-HD-SATA
WH_02,TRAINCLE,A15,102-55665
testsort_3.csv:
WH_03,TRAINLON,L10A3,3005-20
WH_03,TRAINLON,L10A3,3005-21
WH_03,TRAINLON,UK-B3,101859
我该怎么做?不确定是否甚至需要排序以及是否可以在不排序的情况下实现上述目标。
谢谢。
【问题讨论】:
-
你觉得
grep怎么样? -
您是要指定地图(例如
TRAINAMS->testsort_1.cv),还是希望脚本按字母顺序计算? -
查看 awk 中的 RS 变量,以及这个问题中的一些想法:stackoverflow.com/questions/8061475/…
-
我不介意使用 grep。谢谢
-
@Beta,我想使用原始文件名(test.csv 或 testsort.csv)并为结果文件名使用顺序计数器。第 2 列可以包含任意数量的不同值(而不仅仅是我在示例中使用的 3 个)。谢谢