次のようにタブ区切りのデータセットがあります。
#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
。