Bash排序,我不知道如何排序相同的行,并选择较旧的

时间:2012-05-03 16:25:55

标签: bash

我有一些问题,我找不到,我不知道如何在我的脚本中实现好的排序。我想对一些输入字符串进行排序,以显示冗余(一些重复),并从中返回最大重复行,如果我有更多相同的重复例如

输入:

qwe1
qwe1
wer2
wer2
wer4

输出://我想要什么

2 qwe1 
input:
asd1
asd1
asd1
asd2
asd2
asd2
asd3
asd3
asd3
output: // What i want
3 asd1  // If I have a the same name return id of alphabeticall first 

#!/bin/bash
sort -n|uniq -c -i | sort -dr | head -n1

我尝试了其他一些排序参数,但我找不到解决方案。

对不起我的英文,有人可以帮我这个吗?

4 个答案:

答案 0 :(得分:3)

这可能对您有用:

 sort | uniq -c | sort -nrs | head -1

答案 1 :(得分:1)

sort | uniq -c | sort -k1nr -k2 | head -1

其中-k1nr表示对第一列进行数字排序和反向排序(从高到低) 和-k2表示,在第一个键相等的情况下,按列2(按字母顺序)排序

答案 2 :(得分:0)

sort | uniq -c | sort -nr | awk '{if(a&&a!=$1){print a,b;exit;}a=$1;b=$2}'

答案 3 :(得分:0)

我认为这可以在一个单独的awk命令中完成。考虑一下:

awk '{freq[$0]++;} END {for (var in freq)
{if (freq[var]>max || (freq[var]==max && var < item)) 
{max=freq[var]; item=var} } print max, item; }' file.txt