如何刪除非零元素小於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。如果f結果為真(非零),則我們列印該行。

  • f=0

    對於每一行,首先設定f為 false(不列印)

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

    如果任何元素非零且大於一,則設為f( 1true)。

  • f

    如果f為真(非零),則列印此行。

相關內容