Text-Processing

awk 讀取錯誤錯誤地址

  • November 16, 2013

我有一個大約 30GB 的文件。我在用,

awk ' $1 <= 2000 ' myfile.txt >> myfile_new.txt

但是,過了一會兒我得到了這個錯誤 -

awk: read error (Bad address)

我猜這是因為文件太大。有沒有辦法克服這個問題?我還能怎麼做?我需要做的很簡單,我必須提取列中值小於 2000 的所有記錄。

您可能正在使用mawk,它有一些優化,在處理特別大的數據時可能會導致這樣的錯誤。gawk以相同方式執行時可能不會出現這些問題。

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

引用自:https://unix.stackexchange.com/questions/96662