如何从字符串列表中获取排列中的一个项

如何从字符串列表中获取排列中的一个项

我想在一组字符串中仅保留一种排列并计算每种排列的出现次数。

为了让事情更清楚,我想转换(例如)

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是一个哈希表,键是已排序的字符串,值是出现的次数:++每次遇到都会增加()
  • }{“爱斯基摩问候语”——在输入完毕后分离代码以运行

相关内容