各列にNAを含む行を削除します。

各列にNAを含む行を削除します。

次のようにタブ区切りのファイルがあります。

gene    v1  v2  v3  v4
g1  NA  NA  NA  NA
g2  NA  NA  2   3
g3  NA  NA  NA  NA
g4  1   2   3   2

1行あたりのフィールド数は固定され、同じです。上記のファイルから2列から最後の列まで、各行のすべてのフィールドがNAである行を削除したいと思います。その後、出力は次のようになります。

gene    v1  v2  v3  v4
g2  NA  NA  2   3
g4  1   2   3   2 

ベストアンサー1

そしてawk

awk '{ for (i=2;i<=NF;i++) if ($i!="NA"){ print; break } }' file

2番目のフィールドから始めてフィールドを繰り返し、NA含まれていないフィールドが見つかった場合はその行を印刷します。その後、サイクルを終了します。

おすすめ記事