Cygwin-awk无法分配内存

Cygwin-awk无法分配内存,awk,Awk,使用Cygwin(Cygwin\u NT-6.1)时,要比较两个文件(file11.csv:2582行,file22.csv:4.1行) executing the Command awk -F "," 'NR==FNR{a[$2]=$0;next }{print (a[$1]?a[$1]:"NotFound,NotFound") "," $0}' file11.csv file22.csv>Op_file33.csv 我得到这个错误: awk: cmd. line:1: (FILENA

使用
Cygwin(Cygwin\u NT-6.1)
时,要比较两个文件
(file11.csv:2582行,file22.csv:4.1行)

executing the Command awk -F "," 'NR==FNR{a[$2]=$0;next
}{print (a[$1]?a[$1]:"NotFound,NotFound") "," $0}' file11.csv file22.csv>Op_file33.csv
我得到这个错误:

awk: cmd. line:1: (FILENAME=- FNR= fatal: more_nodes: nextfree: can't allocate 4000 bytes of memory (Cannot allocate memory),
。错误文件(gawk.exe.stackdump)包含:堆栈跟踪: 框架函数参数 002299A0 7710F003(00000118,0000EA60,00000000,00229AD4) 002299B4 7710EFB2(000001180000EA60000000A4,00229AB0) 00229AD4 610DBE29(00000000,00000000,00229AD0,00229BC4) 00229BC4 610D915E(00000000,61102FA2,003B0023,002300000) 00229C24 610D962E(20000038,00000000,00229C64,00000006) 00229CD4 610D9780(0000050000000000600229D042022CE64) 00229CF4 610D97AC(00000006002CE80002CE640042DA60) 00229D24 610D9A85(0044F0F4,0000050300000000,00000000) 00229D44 0042B773(000000040000000100229E64,6103118A) 00229D54 691013B2(0000000B,00229DB8,0000000000000000) 00229E64 6103118A(000001180000EA60000000A4,00229F60) 00229F84 610DBEE2(000000040022A0600000001C00000000) 0022A094 610314F0(0022A180、0022FF14、0022A19C、0022A154) 0022A0B8 77AE65F9(0022A180、0022FF14、0022A19C、0022A154) 0022A168 77AE65CB(0022A180、0022A19C、0022A180、0022A19C) 0022A498 77AE6457(00000000,00000000,0022A4DC,77AF3B27)
堆栈结束跟踪(可能会出现更多堆栈帧)

您当前在内存中存储的是更大的文件(file11.csv=25M行),而不是更小的文件(file22.csv=4M行)


只要更改逻辑以存储文件22,并在阅读时将其与文件11中的行进行比较,您可能就没事了。

感谢Ed Morton,我在这里发布之前也这么做了,命令运行了30多小时,没有得到任何输出,当运行相同的命令时,如何选择关键字段和行号,对其进行比较,然后使用输出行号从实际文件中选择要打印的行?这样可以节省存储其中一个文件的完整行的时间。