首页 > 解决方案 > 根据匹配词将 csv 拆分为多个 csv

问题描述

我有以下 csv

TEST,FILENAME1,COL3,COL4
AAAA,BBBBBBBB,CCCC,DDDD
DBDB,HHHDHHHD,UJUJ,UUUU
TEST,FILENAME2,COLX,COLY
1111,222222,2233,3333
33434,45566,6777,77777
jlkwj,reopwr,rewok,ewopk

我想将上述文件拆分为 2 个文件。在解析过程中,如果我得到一个名为 TEST 的关键字,我想创建一个新文件,所有后续内容都应该转到一个新文件,并且 TEST 关键字旁边的列应该是文件名

所以上面的例子中的文件应该被分割为

文件名1.csv

TEST,FILENAME1,COL3,COL4
AAAA,BBBBBBBB,CCCC,DDDD
DBDB,HHHDHHHD,UJUJ,UUUU

文件名2.csv

TEST,FILENAME2,COLX,COLY
1111,222222,2233,3333
33434,45566,6777,77777
jlkwj,reopwr,rewok,ewopk

是否有可以为我执行此操作的 awk 命令?我有很多包含此内容的 csv,我想将它们中的每一个再次拆分为更小的块

标签: shellawk

解决方案


awk -F, '$1=="TEST"{close(out); out=$2".csv"} {print > out}' file.csv

推荐阅读