Provavelmente você está usando mawk
, que possui algumas otimizações que podem resultar em erros como este ao lidar com dados particularmente grandes. gawk
provavelmente não terá esses problemas ao executá-lo da mesma maneira.
Eu tenho um arquivo com aproximadamente 30 GB. Estou usando,
awk ' $1 <= 2000 ' myfile.txt >> myfile_new.txt
Mas, recebo esse erro depois de um tempo -
awk: read error (Bad address)
Eu acho que isso é porque o arquivo é muito grande. Existe alguma maneira de superar isso? De que outra forma posso fazer isso? O que eu preciso fazer é bastante simples, eu tenho que extrair todos os registros que tenham valor menor que 2000 em uma coluna.
Perl pode fazer isso,
#!/bin/env perl
use strict;
use warnings;
while(my $ln=<>){ my($f) = split(/\s/,$ln); if($f<=2000) { print $ln;} }
Então pode Python e Ruby,
#!/bin/env ruby
while( rec = gets() ) do
fld = rec.match(/^(\w+)\s/)
if(fld[1].to_i <= 2000) then puts rec end
end
Um script Python simples pode ajudá-lo a atingir o objetivo. Você provavelmente pode editar o código de este link .