2015-10-15 106 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 
相關問題