2013-09-23 33 views
1

我的文件包含36列(製表符分隔),前4列包含名稱和標識信息,其餘32列包含浮點數(雙精度或0)。我想過濾掉最後32列中有0個值的那些行(在輸出文件中也是製表符分隔的)。使用AWK過濾具有0值的文件

我想使用這個:

if ($5 != 0 && $6 !=0 && ..... $36 != 0) {print $0} 

但這看起來這麼難看,我想效率不高鑑於那裏是if語句32分的條件。有沒有任何有效的方法來完成工作?謝謝

回答

3

使用for循環:

awk '{ for (i=5; i<=NF; i++) { if ($i != 0) { print; next } } }' infile 
0

下面是一個簡短awk你。

awk '/[[:space:]].*[1-9]/' file