AWK:无法打开";04477C9A875B80.csv“;用于输出(打开的文件太多)

AWK:无法打开";04477C9A875B80.csv“;用于输出(打开的文件太多),awk,Awk,我有一个大的CSV文件,需要将其拆分为多个CSV文件,使用第3列作为标识符,结果文件将按第3列中的值命名 我正在使用以下工具: awk -F ',' '{print > ($3".csv")}' playpass.csv 但是我得到了一个错误: awk: cannot open "04477C9A875B80.csv" for output (Too many open files) 我知道我需要关闭文件,但经过几次尝试后,我一无所获,现在又回到了空白画布 我尝试了以下方法,但没有成功

我有一个大的CSV文件,需要将其拆分为多个CSV文件,使用第3列作为标识符,结果文件将按第3列中的值命名

我正在使用以下工具:

awk -F ',' '{print > ($3".csv")}' playpass.csv
但是我得到了一个错误:

awk: cannot open "04477C9A875B80.csv" for output (Too many open files)
我知道我需要关闭文件,但经过几次尝试后,我一无所获,现在又回到了空白画布

我尝试了以下方法,但没有成功,因为我遇到了同样的错误

awk -F ',' '{close($1); i++}{print > $1}' query_result_2019-07-20T15_31_42.941Z.csv

有什么建议吗?

您试图在打开输出文件写入之前而不是在打开之后关闭输出文件。更改此项:

'{close($1); i++}{print > $1}'
为此:

'{print > $1}{close($1); i++}'

当然,您的脚本还有其他问题,但如果没有示例输入/输出,我不想提出任何建议。

您的字段分隔符的可能重复项应与awk程序的其余部分分开引用,并更新以使用我引用的示例,获取相同的错误您的问题对我来说有点模糊:是否有多行在第3列中具有相同的值,您希望在同一输出文件中?第3列是否已排序?您还没有调整其他答案来解决您的问题,
i
在这里是无用的,谢谢-将尝试使用gawk,但是使用gawk已经对iTunes进行了排序。gawk通过为您处理闭包来解决错误,但是如果您没有像我显示的那样更改代码或完全删除close(),那么这就是错误代码。