awkを使用した行のフィルタリング

awkを使用した行のフィルタリング

タブで区切られた次のファイルがあります。

name    v1  v2  v3  v4
g1  4.5 2.3 2.1 0.2
g2  10  3   5   2.3
g3  7   2.5 2.8 3.9

5つの列と4つの行(ヘッダーを含む)を持つダミーファイルが表示されます。行をフィルタリングし、特定の行の各列の値が2より大きい場合はその行を保持し、それ以外の場合は削除します。出力は次のようになります。

name    v1  v2  v3  v4
g2  10  3   5   2.3
g3  7   2.5 2.8 3.9

awkを使ってこれを行うにはどうすればよいですか?

ベストアンサー1

AFAIK awkにはフィールドを明示的に繰り返す方法はありません。たとえば、

$ awk 'NR>1 {for(i=2;i<=NF;i++) if($i+0 < 2) next} 1' file
name    v1  v2  v3  v4
g2  10  3   5   2.3
g3  7   2.5 2.8 3.9

おすすめ記事