2015-10-15 114 views

回答

1

sort -k1,2 file.txt

产生

1 10 
1 10 
1 11 
2 10 
2 10 
2 11 
+0

第5行必须是:2 11和第6行必须是:2 10 –

+0

@HamedGhadimi'sort -k1n -s file.txt' –

+0

@HamedGhadimi - 我不明白为什么“2 11”应该在“2 10”之前, –

1

因为这是最好使用sort命令

sort -k1n -s file.txt 

使用Gnu-awk 4另一种解决方案,Controlling Scanning

gawk ' 
{d[$1][length(d[$1])+1]=$0} 
END{ 
    PROCINFO["sorted_in"] = "@val_num_asc"; 
    for(key in d){ 
     for(i=1; i<=length(d[key]); ++i) { 
      print d[key][i] 
     } 
    } 
}' file.txt 

你,

 
1 10 
1 10 
1 11 
2 10 
2 11 
2 10 
2

这将每个分组内保持线路的顺序:

perl -ane ' 
    push @{$lines{$F[0]}}, $_; 
    } { 
    print join "", map {join "", @{$lines{$_}}} sort keys %lines; 
' <<END 
1 a 
2 a 
1 b 
1 a 
2 c 
2 b 
END 
1 a 
1 b 
1 a 
2 a 
2 c 
2 b 
相关问题