找到出现次数的数量和明年将它添加到模式(find the number of occurences

2019-09-30 14:18发布

我有几个目录中的文件,并在其中的一些,发生一些模式多次。 例如

文件“内容8_list ”:

Spiroplasma_taiwanense 
Spiroplasma_diminutum 
Spiroplasma_apis 
Spiroplasma_sabaudiense 
Spiroplasma_taiwanense 
Spiroplasma_diminutum 
Spiroplasma_taiwanense 
EntAcro10
EntAcro10
Spiroplasma_apis 
Spiroplasma_culicicola 
Spiroplasma_sabaudiense 
Spiroplasma_diminutum 
Spiroplasma_sabaudiense 
Spiroplasma_sabaudiense 
Spiroplasma_sabaudiense 
Spiroplasma_apis 
Spiroplasma_culicicola 
Spiroplasma_culicicola 
Spiroplasma_culicicola 
Spiroplasma_culicicola 
Spiroplasma_diminutum 
Spiroplasma_culicicola 
Spiroplasma_culicicola 
EntAcro1

和文件“的内容574_list

Mesoplasma_florum_l1
Spiroplasma_sabaudiense 
Mesoplasma_florum_w37
EntAcro1

所有文件都有一列。 我想要做的就是每个文件中找到相同的图案,然后添加一些旁边描述的发生。 例如,在文件“ 8_list ”如果Spiroplasma_culicicola发生7次,然后旁边的第一次出现,它应该写Spiroplasma_culicicola_1 ,旁边的第二次出现Spiroplasma_culicicola_2旁边的第三发生Spiroplasma_culicicola_3等等等等

我试图做到这一点的sed通过寻找每个图案分别

sed -z 's/Spiroplasma_culicicola/Spiroplasma_culicicola_2/2'

但我想知道是否有为了做到这一点对我的所有文件和所有模式在给定目录的简单方法

提前致谢

Answer 1:

这是这样的很好的工具是一个很好的任务awk

awk '{gsub(" ", "", $0); a[$0]++; print $0"_"a[$0]}' 8_list

gsub(" ", "", $0); - 替换在该行的末尾的尾随空间

a[$0]++; - 递增每个图案(列值)的出现次数处理的列值作为数组键


输出:

Spiroplasma_taiwanense_1
Spiroplasma_diminutum_1
Spiroplasma_apis_1
Spiroplasma_sabaudiense_1
Spiroplasma_taiwanense_2
Spiroplasma_diminutum_2
Spiroplasma_taiwanense_3
EntAcro10_1
EntAcro10_2
Spiroplasma_apis_2
Spiroplasma_culicicola_1
Spiroplasma_sabaudiense_2
Spiroplasma_diminutum_3
Spiroplasma_sabaudiense_3
Spiroplasma_sabaudiense_4
Spiroplasma_sabaudiense_5
Spiroplasma_apis_3
Spiroplasma_culicicola_2
Spiroplasma_culicicola_3
Spiroplasma_culicicola_4
Spiroplasma_culicicola_5
Spiroplasma_diminutum_4
Spiroplasma_culicicola_6
Spiroplasma_culicicola_7
EntAcro1_1


文章来源: find the number of occurences and add it next to the pattern