使用自定义模式排序?

使用自定义模式排序?

是否可以根据出现次数排序,而不是根据 az 排序?

所需任务的示例,

输入 =

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-

其中,awk在每行前面添加行的出现次数作为数字,以sort作为其第一个键(数字顺序)进行排序k,并将原始行作为第二个键(默认区域设置排序顺序)。

这里使用:作为分隔符而不是awk的默认 SPC 以及sort从非空白到空白的默认转换(与默认情况一样),SPC 将包含在第二个键中,这可能(不太可能)对排序产生影响。

相关内容