ゼロ以外の要素が1未満の行を削除する方法

ゼロ以外の要素が1未満の行を削除する方法

行を削除したいゼロ以外のすべての要素1未満

私のファイルは

a   2   0   0   0   9
b   3   0   0   0.7 13
c   0.3 0.5 0   0   0
d   0.4 7.96681779026634e-05    0       0     

期待される出力は

a   2   0   0   0   9
b   3   0   0   0.7 13

私は初心者です。awk '{for(i=2;i<=NF;i++){if($i+0=0 print $0; else < 1) next}} 1'以前のコードを次のように編集して試してみました。このリンク、しかし、私は何か間違っています。

答え1

試す:

$ awk '{f=0; for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1} f' file
a  2   0   0   0   9
b   3   0   0   0.7 13

コードでは変数を使用しますf。 がftrue (ゼロ以外) になった場合は、行を出力します。

  • f=0

    各行をffalse(印刷しない)に設定して開始します。

  • for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1

    いずれかの要素がゼロ以外で 1 より大きい場合は、(true)fに設定されます。1

  • f

    fが真(ゼロ以外)の場合、この行を出力します。

関連情報