awk ler endereço incorreto do erro

2

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.

    
por hashpling 18.10.2013 / 20:44

3 respostas

0

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.

    
por 16.11.2013 / 03:37
1

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
    
por 18.10.2013 / 22:44
0

Um script Python simples pode ajudá-lo a atingir o objetivo. Você provavelmente pode editar o código de este link .

    
por 18.10.2013 / 21:13