Как я могу выполнить обратную сортировку письма по вхождению, но если в нем есть количество вхождений, сортируйте его по алфавиту? - PullRequest
2 голосов
/ 31 октября 2019

Так что я делаю упражнения для практики, но я столкнулся с чем-то непонятным. Мне нужно посчитать, сколько раз каждая буква в текстовом документе встречалась, а затем печатать их одну за другой, буква, которая появляется самой первой.

Проблема заключается в том, что мне нужно отсортировать буквы с одинаковым количеством вхождений в алфавитном порядке. Это проблема, потому что сортировка автоматически сортирует по алфавиту, поэтому, когда я выполняю обратную сортировку по вхождению, она автоматически сортирует буквы с одинаковым номером вхождения в обратном алфавитном порядке.

Я пытался отсортировать по столбцу, чтобы сортировать числасначала и буквы после, но это не работает.

Так что давайте теперь просто поработаем с несколькими буквами.

echo eeeeerrrbbbcccnN | tr a-z A-Z | grep -iE [a-z] -o | sort | uniq -c | sort -rn | tr -d 0-9'\n '

Вывод ERCBN, но он должен быть EBCRN.

1 Ответ

2 голосов
/ 31 октября 2019

Вы можете указать несколько условий сортировки:

$ # OP's attempt
$ echo eeeeerrrbbbcccnN | tr a-z A-Z | grep -iE [a-z] -o | sort | uniq -c | sort -rn
      5 E
      3 R
      3 C
      3 B
      2 N

$ # multiple column sort
$ # also note the change in grep command
$ echo eeeeerrrbbbcccnN | tr a-z A-Z | grep -o [A-Z] | sort | uniq -c | sort -k1,1nr -k2,2
      5 E
      3 B
      3 C
      3 R
      2 N
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...