當行中的某一列的值小於 1 時如何刪除該行

當行中的某一列的值小於 1 時如何刪除該行

我有一個包含 7000 行和 28 列的文件。當 28 列中的一列的值小於 1 時,如何刪除一行?

我找到了答案,其中awk指定列時他們刪除一行。

但我想刪除該行,無論值小於一的列號如何。

我的文件採用製表符分隔格式。
範例文件

a       1       2       4       7       9
b       0.5     0.9     6       10      3
c       3       5       12      7       9
d       0.9     6       7       4       10

答案1

在 Awk 中,您將循環遍歷欄位(列)並測試每個欄位。由於您的行有一個非數字的第一列,因此從第二個 ( i=2) 開始:

所以

awk '{for(i=2;i<=NF;i++){if($i+0 < 1) next}} 1' file

前任。給定

$ cat example
a       1       2       4       7       9
b       0.5     0.9     6       10      3
c       3       5       12      7       9
d       7.96681779026634e-05     6       7       4       10

然後

$ awk '{for(i=2;i<=NF;i++){if($i+0 < 1) next}} 1' example
a       1       2       4       7       9
c       3       5       12      7       9

在 Perl 中,您可以在移出第一列後grep預設分割數組:@F

perl -ane 'shift @F; print unless grep { $_ < 1 } @F' file

相關內容