Сортировать по пользовательскому шаблону?

Сортировать по пользовательскому шаблону?

Вместо сортировки по алфавиту можно ли выполнить сортировку по частоте встречаемости?

Пример желаемой задачи,

Вход =

Example
Example
Hello
Hello
Input
Input
List
List
World
World
...

Желаемый результат =

Example
Hello
Input
List
World
Example
Hello
Input
List
World
...

Итак, в этом сценарии он берет первое вхождение каждой строки и расставляет их по порядку, затем второе вхождение каждой строки и расставляет их по порядку до тех пор, пока не останется ни одного вхождения.

решение1

Вы всегда можете использовать подход «украсить — отсортировать — отменить украшение»:

<input awk -v OFS=: '{print ++n[$0], $0}' |
  sort -t: -k1,1n -k2 |
  cut -d: -f2-

Where awkдобавляет к каждой строке номер вхождения строки для sortсортировки в качестве первого kключа (числовой порядок) и исходную строку в качестве второго ключа (порядок сортировки локали по умолчанию).

Здесь :в качестве разделителя используется вместо awkSPC по умолчанию и sortперехода по умолчанию от непустого к пустому значению, как при таком значении по умолчанию, SPC будет включен во второй ключ, что может (маловероятно) повлиять на сортировку.

Связанный контент