Как найти количество неупорядоченных пар из списка

Я хочу подсчитать количество неупорядоченных пар из списка.

Другими словами, у меня есть список:

ab ba ac bc 

и я хочу отобразить:

 2 ab 1 ac 1 bc 

4 Solutions collect form web for “Как найти количество неупорядоченных пар из списка”

Это звучит неплохо для perl :

 perl -F -lane '$count{join "", sort @F}++; END{print "$count{$_} $_" for sort keys %count}' < your-file 

С gawk :

 gawk -F '' '{ print ($1 > $2) ? $2$1 : $1$2 }' | sort | uniq -c 

Каждое поле соответствует одному символу ( -F '' ). Мы просто инвертируем символы, если первая больше второй в соответствии с текущей локалью (что не имеет значения). Затем мы сортируем результат и подсчитываем одинаковые последовательные строки с uniq -c .

Вот общий способ с последними версиями GNU awk:

 gawk -i join ' { split($0, F, //) asort(F) h[join(F, 1, length(F), SUBSEP)]++ } END { asorti(h, x) for(k in h) print h[k], k }' infile 

Или как отдельный скрипт:

order.awk

 @include "join" { split($0, F, //) asort(F) h[join(F, 1, length(F), SUBSEP)]++ } END { asorti(h, x) for(k in h) print h[k], k } 

Выполните его следующим образом:

 gawk -f order.awk infile 

Вывод:

 2 ab 1 ac 1 bc 

fish раковина:

 ⋊> ~ echo 'ab ba ac bc' | while read line; echo -n "$line" | sed -r 's|(.)|\1\n|g' | sort | xargs | tr --delete ' '; end | uniq -c 

оболочка bash :

 bash-3.2$ echo 'ab ba ac bc' | while read line; do echo -n "$line" | sed -r 's|(.)|\1\n|g' | sort | xargs | tr --delete ' '; done | uniq -c 

Вывод:

  2 ab 1 ac 1 bc 
  • Как я могу получить последний номер строки уникальных команд, когда grepping мой файл истории?
  • линии с уникальной контрольной суммой
  • Почему эти ценности не могут быть объединены вместе?
  • Как удалить конкретную дублируемую строку в файле?
  • `uniq` не в режиме реального времени, когда
  • Комбинация uniq и agrep?
  • сортировать и uniq столбцы отдельно в текстовом файле
  • Как использовать grep, sort и uniq для создания трех полей вывода
  • Как let `sort | uniq -c` отделяет количество вхождений с помощью табулятора?
  • awk объединить два больших файла и удалить дублированные строки
  • Найти дубликаты по столбцу в файле
  • Linux и Unix - лучшая ОС в мире.