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

相关内容