我想在一组字符串中仅保留一种排列并计算每种排列的出现次数。
为了让事情更清楚,我想转换(例如)
ab
acf
ba
cfa
acf
进入
2 ab
3 acf
其中 2 和 3 分别是 {a,b} 和 {a,c,f} 的排列数。
您如何以最直接的方式在 bash 中完成此操作?
答案1
Perl 来救援!
perl -lne '$h{ join "", sort split // }++ }{ print "$h{$_} $_" for keys %h' < input_file
-n
逐行读取输入-l
从输入中删除换行符,在输出中添加换行符split //
将字符串拆分成字符sort
对它们进行排序(因此具有唯一性)join ""
从字符列表中创建一个字符串%h
是一个哈希表,键是已排序的字符串,值是出现的次数:++
每次遇到都会增加()}{
“爱斯基摩问候语”——在输入完毕后分离代码以运行