如何从列表中找到无序对的数量

use*_*112 6 awk text-processing uniq gawk

我想从列表中计算无序对的数量。

换句话说,我有一个清单:

ab
ba
ac
bc
Run Code Online (Sandbox Code Playgroud)

我想显示:

2 ab
1 ac
1 bc
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 8

对于以下人员来说,这听起来是一份不错的工作perl

perl -F -lane '$count{join "", sort @F}++;
               END{print "$count{$_} $_" for sort keys %count}' < your-file
Run Code Online (Sandbox Code Playgroud)


xhi*_*nne 7

gawk

gawk -F '' '{ print ($1 > $2) ? $2$1 : $1$2 }' | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)

每个字段匹配一个字符 ( -F '')。如果第一个大于第二个,我们只是根据当前的语言环境反转字符(这无关紧要)。然后我们对结果进行排序并使用 计算相同的连续行uniq -c