約30GBのファイルがあります。使っている、
awk ' $1 <= 2000 ' myfile.txt >> myfile_new.txt
ただし、しばらくするとこのエラーが発生します。
awk: read error (Bad address)
どうやらファイルが大きすぎてそうだと思います。これを克服する方法はありますか?私はまた何ができますか?私がしなければならないことは簡単です。列から2000未満の値を持つすべてのレコードを抽出する必要があります。
答え1
mawk
特に、大量のデータを処理するときに、このようなエラーを引き起こす可能性があるいくつかの最適化機能を使用している可能性があります。gawk
同じ方法で実行すると、これらの問題は発生しない可能性があります。
答え2
Perlはそれを行うことができます。
#!/bin/env perl
use strict;
use warnings;
while(my $ln=<>){ my($f) = split(/\s/,$ln); if($f<=2000) { print $ln;} }
PythonとRubyも利用可能です。
#!/bin/env ruby
while( rec = gets() ) do
fld = rec.match(/^(\w+)\s/)
if(fld[1].to_i <= 2000) then puts rec end
end