我有一個包含 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