0

このようなファイルがあります

1      CC     AAA   

1      Na    AAA

1      Na    AAA

1      Na    AAA

1      Na    AAA

1      CC    BBB

1     Na    BBB

1     Na    BBB

1     xa    BBB

1     CC    CCC

1     Na    CCC

1     da    CCC

列 2 を削除してから、ファイル全体を"01"for AAA"02"forなどに置き換えたいと思います。BBB最後に、出力は次のようになります。

1     01    AAA 

1     01    AAA

1     01    AAA

1     01    AAA

1     01    AAA

1     02    BBB

1     02    BBB

1     02    BBB

1     02    BBB

1     03    CCC

1     03    CCC

1     03    CCC

これを機能させる手がかりはありません。可能であれば私を助けてください。ここでは、すべての cc で新しい変数が始まります。AAA2 列目のCC のみでBBB追跡できます。

4

3 に答える 3

2

でそれを行う1つの方法awk

awk '$3!=a&&NF{a=$3;x=sprintf("%02d",++x);print $1,x,$3;next}$3==a&&NF{print $1,x,$3;next }1' inputFile
于 2013-06-04T13:43:21.100 に答える
1

を使用する 1 つの方法を次に示しawkます。

awk '$3 != r { ++i } { $2 = sprintf ("%02d", i) } { r = $3 }1' OFS="\t" file

OFS をタブ文字に設定しましたが、好きなものを選択できます。結果:

1   01  AAA
1   01  AAA
1   01  AAA
1   01  AAA
1   01  AAA
1   02  BBB
1   02  BBB
1   02  BBB
1   02  BBB
1   03  CCC
1   03  CCC
1   03  CCC
于 2013-06-04T14:01:45.093 に答える
0

あなたが欲しいようです:

awk '$2=="CC" { a+=1 } {$2=sprintf("%02d",a)} 1' input
于 2013-06-04T14:11:25.583 に答える