
Вместо сортировки по алфавиту можно ли выполнить сортировку по частоте встречаемости?
Пример желаемой задачи,
Вход =
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
ключа (числовой порядок) и исходную строку в качестве второго ключа (порядок сортировки локали по умолчанию).
Здесь :
в качестве разделителя используется вместо awk
SPC по умолчанию и sort
перехода по умолчанию от непустого к пустому значению, как при таком значении по умолчанию, SPC будет включен во второй ключ, что может (маловероятно) повлиять на сортировку.