Dimitris Mintis Asked: 2019-10-04 02:31:40 +0800 CST2019-10-04 02:31:40 +0800 CST 2019-10-04 02:31:40 +0800 CST 基于行字符,在其旁边打印相应的数字 772 我有以下输入格式, H O C H H C H H O C H H C 我想获得以下输出, H1 O1 C1 H2 H3 C2 H4 H5 O2 C3 H6 H7 C4 text-processing 1 个回答 Voted Best Answer Inian 2019-10-04T02:40:29+08:002019-10-04T02:40:29+08:00 您可以使用awk如下简单的命令。下面将{..}1通过将值附加到当前行来简单地重建整行$0,该值标记文件中单词的出现次数。 awk '{ $0 = $0 "" ++unique[$0] }1' file 该部分unique[$0]创建一个哈希映射,其值为$0键,即unique['H'], unique['O']等。其上的预增量会将数组中的值增加为unique['H']=1,unique['H']=2依此类推。我们也可以只将计数器附加到每一行的末尾,而不是显式地重新创建每一行 awk '{ print($0 "" ++unique[$0]) }' file 等效的 Perl 版本,具有相同的逻辑 perl -lpe '{ $_ .= ++$unique{$_} }' file 后一种可以很容易地适应字符不在单独的行中的情况,例如: $ echo ABBC | perl -lpe 's/./$& . ++$unique{$&}/ge' A1B1B2C1
您可以使用
awk
如下简单的命令。下面将{..}1
通过将值附加到当前行来简单地重建整行$0
,该值标记文件中单词的出现次数。该部分
unique[$0]
创建一个哈希映射,其值为$0
键,即unique['H'], unique['O']
等。其上的预增量会将数组中的值增加为unique['H']=1
,unique['H']=2
依此类推。我们也可以只将计数器附加到每一行的末尾,而不是显式地重新创建每一行等效的 Perl 版本,具有相同的逻辑
后一种可以很容易地适应字符不在单独的行中的情况,例如: