行の先頭に固定語がある場合は増加し、そうでない場合は同じ数字を使い続けたいと思います。
入力する:
CH,A11R,Q9Y5X3,SNX5
CD,A12L,Q9Y316,MEMO1
CD,A12L,Q70CQ2,USP34
CT,A12L,Q8N7H5,PAF1
CH,A12L,Q8IZL8,PELP1
CD,A13L,Q5SY16,NOL9
CD,A13L,Q6P1J9,CDC73
CT,A13L,Q8WVC0,LEO1
CH,A13L,Q9Y4W2,LAS1L
CD,A13L,Q6PD62,CTR9
最初の列がCHで始まる場合は次の数字に続き、そうでない場合は同じ数字を印刷します。
出力:
CH,A11R,Q9Y5X3,SNX5 ,1
CD,A12L,Q9Y316,MEMO1 ,1
CD,A12L,Q70CQ2,USP34 ,1
CT,A12L,Q8N7H5,PAF1 ,1
CH,A12L,Q8IZL8,PELP1 ,2
CD,A13L,Q5SY16,NOL9 ,2
CD,A13L,Q6P1J9,CDC73 ,2
CT,A13L,Q8WVC0,LEO1 ,2
CH,A13L,Q9Y4W2,LAS1L ,3
CD,A13L,Q6PD62,CTR9 ,3
ベストアンサー1
(any)の場合、awk
ツールボックスには次のものが必要です。
awk 'BEGIN{FS=OFS=","}$1=="CH"{lc++}{print $0,lc}' file
同じコマンドですが、理解しやすくするために複数行に分かれています。
awk '
BEGIN{FS=OFS=","} # set input and output fields separator as ","
$1=="CH"{lc++} # if $1(first column)==CH, increment lc (last column)
{print $0,lc} # print current line and the variable lc
' file
出力が必要な場合現状のまま:
awk 'BEGIN{FS=OFS=","}$1=="CH"{lc++}{printf("%-20s,%d\n", $0,lc)}' file
CH,A11R,Q9Y5X3,SNX5 ,1
CD,A12L,Q9Y316,MEMO1,1
CD,A12L,Q70CQ2,USP34,1
CT,A12L,Q8N7H5,PAF1 ,1
CH,A12L,Q8IZL8,PELP1,2
CD,A13L,Q5SY16,NOL9 ,2
CD,A13L,Q6P1J9,CDC73,2
CT,A13L,Q8WVC0,LEO1 ,2
CH,A13L,Q9Y4W2,LAS1L,3
CD,A13L,Q6PD62,CTR9 ,3