【发布时间】:2018-02-02 19:24:29
【问题描述】:
当我尝试将太多 csv 文件连接在一起时,我遇到了如下错误。
面对错误
awk: cmd. line:1: (FILENAME=rawdata.2018-01-14.csv.bkp FNR=1069) fatal: cannot open pipe `date "+%F %T" -d "Jan 13 22:00:12 2018"1' (Too many open files) awk: cmd. line:1: (FILENAME=rawdata.2018-01-15.csv.bkp FNR=1070) fatal: cannot open pipe `date "+%F %T" -d "Jan 13 22:00:12 2018"1' (Too many open files)
等...直到 FNR=1074
在 60 个文件中,它处理前 44 个文件和接下来的 16 个文件在连接时出错。
代码:
for i in rawdata.*.csv;
do
echo $i;
awk '{if($0) printf("%s\t%s\n", FILENAME, $0); else print FILENAME;}' $i > $i.bk;
sed -e "1,2d" $i.bk > $i.bkp
awk -e '{tempdate="date \"+%F %T\" -d \""$6" "$7" "$8" "$9"\"" tempdate | getline tmpdate; print tmpdate "\t" "source-" $1 "\t" $2 "\t" $3 "\t" $4 "\t" $9 "\t" $10 "\t" $11 ; close(tempdate) }' $i.bkp | sed 's/.//5' > $i.bakp
done
cat rawdata.*.bakp > rawdatacombnew.csv
rm rawdata.*.bk
rm rawdata.*.bkp
rm rawdata.*.bakp
任何建议都会非常有帮助。
我看到的一个观察结果是,在我的示例中,文件大小从处理第 45 个文件开始增加。尺寸有问题吗?
谢谢。
【问题讨论】:
-
将您的 awk 代码添加到您的问题中。
-
做一个
ulimit -n并在必要时增加它。 -
大家好,我已经添加了我的代码。请建议!!
-
@cdarke,我检查了 ulimit -n,它显示为 1024。我不确定它对我的代码有何影响?或者我需要改变它吗?