按照模式将非常大的文件分成小文件
Divide very large file into small ones following pattern
我一直在努力解决这个问题,但收效甚微,所以我来这里是为了获得一些新的建议。
我正在尝试将每次扫描的数据提取到单独的文件中。
问题是在创建了 3196 个文件后,我收到错误消息:awk“打开的文件太多”。
我知道我需要关闭 awk 创建的文件,但我不知道该怎么做。
文本输入文件看起来像这样(最多 80 000 次扫描):
Scan 1
11111 111
22222 221
...
Scan 2
11122 111
11122 111
...
Scan 3
11522 141
19922 141
...
现在我一直在做:
awk '/.*Scan.*/{n++}{print >"filescan" n }' inputfile
创建 3196 个文件后,每次扫描和崩溃都会给我一个递增的输出文件..
cat filescan1
Scan 1
11111 111
22222 221
...
有什么想法吗?
您需要 close the output file 因为 awk 保持文件句柄打开。
awk '/.*Scan.*/{
close(file);
n++;
}
{
file="filescan"n;
print >> file;
}' inputfile
我一直在努力解决这个问题,但收效甚微,所以我来这里是为了获得一些新的建议。
我正在尝试将每次扫描的数据提取到单独的文件中。
问题是在创建了 3196 个文件后,我收到错误消息:awk“打开的文件太多”。
我知道我需要关闭 awk 创建的文件,但我不知道该怎么做。
文本输入文件看起来像这样(最多 80 000 次扫描):
Scan 1
11111 111
22222 221
...
Scan 2
11122 111
11122 111
...
Scan 3
11522 141
19922 141
...
现在我一直在做:
awk '/.*Scan.*/{n++}{print >"filescan" n }' inputfile
创建 3196 个文件后,每次扫描和崩溃都会给我一个递增的输出文件..
cat filescan1
Scan 1
11111 111
22222 221
...
有什么想法吗?
您需要 close the output file 因为 awk 保持文件句柄打开。
awk '/.*Scan.*/{
close(file);
n++;
}
{
file="filescan"n;
print >> file;
}' inputfile