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

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

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

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 
  • В чем разница между «sort -u» и «sort | уник»?
  • Подключения к серверу мониторинга - проблема форматирования Netstat
  • Мне нужны данные из файла csv, которого нет во втором файле csv
  • Почему утилита uniq дает мне неожиданные результаты?
  • Общие строки между двумя файлами
  • Awk / bash Keep line containg только 3 поля
  • Считайте уникальные строки только для заданного шаблона
  • Как получить только уникальные результаты без сортировки данных?
  • получить список месяцев, используя dseq from dateutils
  • суммы столбцов на основе совпадающих полей
  • Как удалить конкретную дублируемую строку в файле?
  • «Подсчитайте, сколько разных начальных букв написано в именах языков»
  • Interesting Posts

    Netcat не работает на Linux-сервере, работающем в сети VPN

    Переименуйте файлы со случайными символами из sha1sum. Будут ли имена уникальными?

    Вход в систему или подключение к USB-устройству пробуждает сетевой принтер

    В AIX 6100-05-02-1034 как создать пользовательский umask для определенного каталога?

    Yum говорит, что зависимость «libltdl.so.3» требуется, но она уже установлена?

    Пропустить USB-устройство fastboot для VirtualBox Windows VM от ArchLinux

    3G-соединение с wvdial не получает IP, выходы с кодом 16

    Экран компьютера не включается после пробуждения

    Каково использование / значение «области подкачки» при установке Linux?

    Как начать настройку linux?

    Где приложение должно сохранять рабочие файлы?

    device-mapper: перезагрузить ioctl в кеше1 не удалось: занято или занято ресурсом

    / etc / sudoers Правило не соблюдается

    Проверить количество слов в файле, содержащем конкретную букву

    Как восстановить grub2 (не) загрузку 32-разрядной EFI на 64-битной машине?

    Linux и Unix - лучшая ОС в мире.