awk 计算出现次数然后分成两个文件

awk to count of occurrences then split into two file

想根据 $2 字段计算出现次数,然后将输入文件拆分为两个输出文件, 如果 $2 字段出现超过 3 次,那么这些行将重新定向到 OpFile11.txt,否则将重新定向到 OpFile22.txt

Input.csv

Des1,Location,Decs2
aaa,a123,xxx
bbb,b789,yyy
xxx,a123,aaa
aaa,a123,xxx
bbb,b789,yyy
ccc,c567,zzz
xxx,a123,aaa
ddd,d456,ddd

OpFile11.txt

aaa,a123,xxx
xxx,a123,aaa
aaa,a123,xxx
xxx,a123,aaa

OpFile22.txt

bbb,b789,yyy
bbb,b789,yyy
ccc,c567,zzz
ddd,d456,ddd

步骤#1:计算出现次数:

awk -F, '{key=;++a[key]} END {for(i in a) print i","a[i]}' Input.csv 

d456,1
b789,2
c567,1
a123,4

步骤#2:将输入文件分成两部分:

awk ' BEGIN {FS = OFS = ","} FNR==NR {a[]=[=14=];next} ( in a) { print [=14=] }' OccurGR3.csv Input.csv > OpFile11.txt
awk ' BEGIN {FS = OFS = ","} FNR==NR {a[]=[=14=];next} !( in a) { print [=14=] }' OccurGR3.csv Input.csv > OpFile22.txt

其中 OccurGR3.csv

a123,4

请建议避免三步走,求您的建议!!!

awk -F, '
NR==FNR { cnt[]++; next }
{ print > ( "OpFile" (cnt[]<3?22:11) ".txt" ) }
' Input.csv Input.csv