我想對整個文件重新排序。如何用awk對文本文件進行排序?
file.txt的是這樣的:
1 10 1 10 2 10 1 11 2 11 2 10
我想它看起來就像這樣:
1 10 1 10 1 11 2 10 2 11 2 10
我想對整個文件重新排序。如何用awk對文本文件進行排序?
file.txt的是這樣的:
1 10 1 10 2 10 1 11 2 11 2 10
我想它看起來就像這樣:
1 10 1 10 1 11 2 10 2 11 2 10
sort -k1,2 file.txt
產生
1 10
1 10
1 11
2 10
2 10
2 11
第5行必須是:2 11和第6行必須是:2 10 –
@HamedGhadimi'sort -k1n -s file.txt' –
@HamedGhadimi - 我不明白爲什麼「2 11」應該在「2 10」之前, –
因爲這是最好使用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
這將每個分組內保持線路的順序:
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
爲什麼不在bash中使用'sort'命令? –