我正在尝试在OSX的第一列中使用id的awk
大型csv文件进行排序。
我开始时:
awk -F, 'NR>1 {print > ($1 ".sync")}' file.csv
但是,进程在ID s_17处停止,并显示错误:
awk: s_18.sync makes too many open files input record number 37674601,
file file.csv source line number 1
我尝试使用此close()
语句进行修改,但它只会写入第一个文件
awk -F, 'NR>1 {print > ($1 ".sync");close($1 ".sync"}' file.csv
任何人都可以正确地提供关于如何在每个文件之后关闭文件的见解,以便打开文件的数量保持可管理但是它们都被写入了吗?
答案 0 :(得分:0)
因为您关闭了文件,所以需要使用追加>>
运算符,这样就不会破坏输出文件:
$ awk -F, 'NR>1{f=$1".sync";print >> f;close(f)}' file.csv
使用awk
查看有关重定向的官方字词manual。
答案 1 :(得分:0)
不要用awk排序。 AWK非常适合在排序之前格式化数据。将输出传递给sort(1)并让它对数据进行排序。这是什么类型,它做得很好。
另外 - 您需要哪种类型?字典?数字?你需要忽略空格吗?
示例:
sort -t, -n <file