awk読み取りエラーアドレスエラー

awk読み取りエラーアドレスエラー

約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

関連情報