2

列1に家族識別子のリストがあるファイルがあります

AB
AB
AB
AB
SAR
SAR
EAR

各繰り返しに番号が付けられた新しい列を作成して、繰り返しごとに新しいラベルを作成する方法はありますか?

AB_1
AB_2
AB_3
AB_4
SAR_1
SAR_2
EAR_1

SASでこれを行うことができますが、bashオプションを探しています(おそらくawk)

data file;
set file; 
count+1;
by name;
if first.name then count=1;
new_name=compress(name||'_'||count);
run;
4

2 に答える 2

4
$ awk '{print $1"_"++a[$1]}' file
AB_1
AB_2
AB_3
AB_4
SAR_1
SAR_2
EAR_1
于 2013-03-25T15:56:57.070 に答える
2

このワンライナーを試してください:

awk '{a[$0]++;print $0"_"a[$0]}' file

あなたの入力データで:

kent$ echo "AB
AB
AB
AB
SAR
SAR
EAR"|awk '{a[$0]++;print $0"_"a[$0]}'
AB_1
AB_2
AB_3
AB_4
SAR_1
SAR_2
EAR_1
于 2013-03-25T15:57:17.570 に答える