我想将一系列小文件与一个相对大的文件相交。遵循关于堆栈溢出的许多主题并经过一些测试之后,我选择使用此函数,该函数是我数据中最快的:
for file1 in ./myfiles*
do
# Do other things to create file1 and file2
# Then
grep -f $file1 file2.txt | awk -F '\t' '{print $1}' > myResults_$file1.txt
done
其中,file1是一个50到100000行的单列文件,而file2是两个由制表符分隔的〜1百万行的文件。
Ex :
file1
A
B
C
file2
A 1
B 2
C 3
我在具有1个线程和48Gb RAM的群集上运行命令。但是我一到达文件1大于10000行,它就会崩溃,并显示以下错误:
slurmstepd: Job 3312063 exceeded memory limit (50359784 > 50331648), being killed
有人可以向我解释为什么此命令在内存中存储的空间如此大,如何解决此问题?