結果

結果

次のようにタブ区切りのデータセットがあります。

#1 2      3   4  5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1 10024 10395 41 K + 2 1 1 12 14  5  0  0  3  1  3  6 2 
1 10679 10795 51 P + 2 1 1 15 14  3  0  0  2  1  2  3 1 

列7-19に基づく値を格納するために、列($ 20)をもう1つ追加したいと思います。列の数字がゼロでない場合は、1つを追加します。予想出力:

#1 2      3   4  5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 10024 10395 41 K + 2 1 1 12 14  5  0  0  3  1  3  6 2  11
1 10679 10795 51 P + 2 1 1 15 14  3  0  0  2  1  2  3 1  11

awkを使ってコマンドを書くには?

ベストアンサー1

7番目のフィールドから繰り返し、このフィールドの値が0であることを確認し、そうでない場合は20番目のフィールドに1を追加します。

awk -F '\t' 'NR==1 {$(NF+1)=NF+1; print; next}; \
            {for(i=7; i<NF; i++) if ($i != 0) $20++}; 1' OFS='\t' file.txt

最初のレコード(NR==1)の場合、追加フィールドヘッダーは最後のフィールドとして追加され、現在は1が追加されますNF

おすすめ記事