我有一个大约 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