Csv 匹配模式并创建新文件

Csv 匹配模式并创建新文件,csv,awk,grep,Csv,Awk,Grep,我有一个名为file1.csv的csv文件: something;AD;sss;Andorra;nothing;type_1;sss something222;AD;sss222;Andorra;nothing222;type_2;aaa thing;NL;thing3;Netherlands;thing;type_2;bb etc;US;etc;United States;etc;type_2;nothing 这是可行的,但我拥有世界上所有的国家。我不想为每一个国家写这句话。还有其他解决办法吗

我有一个名为file1.csv的csv文件:

something;AD;sss;Andorra;nothing;type_1;sss something222;AD;sss222;Andorra;nothing222;type_2;aaa thing;NL;thing3;Netherlands;thing;type_2;bb etc;US;etc;United States;etc;type_2;nothing 这是可行的,但我拥有世界上所有的国家。我不想为每一个国家写这句话。还有其他解决办法吗?任何帮助都是非常感激的

编辑:我更新了我的问题。我还有一个类型为1和2的列。在创建了每个国家对应的所有文件之后,我需要为每个国家创建新文件,仅使用类型_1,并使用类型_2创建新文件

例如,对于安道尔,我需要文件:
fileAD.csv:

something;AD;sss;Andorra;nothing;type_1;sss something222;AD;sss222;Andorra;nothing222;type_2;aaa 某物公元sss;安道尔;没有什么;_1型;sss 某物222;公元sss222;安道尔;虚无222;_2型;aaa fileADtype_1.csv:

something;AD;sss;Andorra;nothing;type_1;sss 某物公元sss;安道尔;没有什么;_1型;sss fileADtype_2.csv:

something222;AD;sss222;Andorra;nothing222;type_2;aaa 某物222;公元sss222;安道尔;虚无222;_2型;aaa
我认为只查找带有缩写的列是可以的,但出于安全考虑,我想要两列,一列带有“AD”,另一列带有全名“Andorr”。

作为带有awk的一行:

用于$(awk-F';“{print$2}”data.csv | uniq)中的代码;做awk-F';'-v pat=“$code”'$2~pat{print$0}'data.csv>“file${code}.csv”;完成

我选择只包含一个
awk
实例的单行程序,没有临时文件:

awk -F ';' '{print >> "file" $2 ".csv"}' file1.csv

@Sundeep,谢谢你。我更新了我的问题。你的回答有效。我觉得没关系,我不认为两个国家可以有相同的缩写。我希望这不会发生。我还需要将fileAD.csv拆分为两个以上的文件,与类型对应的列。@Savas31不鼓励更改要求,因为已经给出的答案需要更新。。所以,我建议将问题回复到之前的状态,但补充说明全名不需要匹配。。。对于你的额外步骤,你应该能够从答案中自己计算出来given@Sundeep,对不起,我不明白这是怎么回事……我是新来的。谢谢你的澄清。谢谢,这很有效。可以通过某种方式获取所有文件fileAD.csv、fileADtype_1.csv和fileADtype_2.csv?或者只是fileADtype_1.csv和fileADtype_2.csv?是的,这也是可能的,使用
awk-F';“”{print>>“file”$2$6.csv“}”file1.csv
,如果您想同时使用这两种格式,可以通过执行以下操作来组合它们:
awk-F';“”{print>>“文件”$2.csv;“print>>“文件”$2$6.csv“}”file1.csv
。是否有方法指定输出文件的路径?要在“print>>”之后写入路径?@Savas31:当然。只需发出
print>>“path/to/file“$2.csv”
awk -F ';' '{print >> "file" $2 ".csv"}' file1.csv