1
我有一个文件夹,其中包含几个文件,我想要使用它们排除awk
共有的所有术语。 这里是我一直在使用这个脚本:消除awk中文件夹中所有文件中出现的所有值
awk '
FNR==1 {
if (seen[FILENAME]++) {
firstPass = 0
outfile = FILENAME "_new"
}
else {
firstPass = 1
numFiles++
ARGV[ARGC++] = FILENAME
}
}
firstPass { count[$2]++; next }
count[$2] != numFiles { print > outfile }
' *
在文件中的信息的一个例子是:
文件1
3 coffee
4 and
8 milk
文件2
4 dog
2 and
9 cat
的输出应该是:
File1_new
3 coffee
8 milk
File2_new
4 dog
9 cat
它适用于我使用少量的文件(即10),但是当我开始增加这个数字,我收到以下错误信息:
awk: file20_new makes too many open files input record number 27, file file20_new source line number 14
,其中从当我使用较大量的文件来的错误?
我的主要目标是在文件夹中的所有文件上运行此脚本以生成新文件,不包含包含文件夹中所有文件中出现的任何词。
你需要关闭()你的文件,当你完成它们。正如你携带你永远打开的每个文件一样。 –