linux sort 命令

sort
对文本文件内容 行 排序

参数:
-t 指定分隔符,默认tab或空格
-k 以哪列进行排序,上面-t分割后,1行可能有多列
   可以指定多列排序
   语法:开始列[.第几个字符,结束列.第几个字符]
        括号内可以省略不指定
-r 降序,默认升序
-u 去除重复行
-n 以数字进行排序,默认以字符
-f 忽略大小写

建立第一个测试文件
# cat > one.txt
4
6
22
7
3
18


排序
# sort one.txt 
18
22
3
4
6
7

3比22大,因为默认以字符进行排序,一个一个位置进行比较

以数字进行排序
# sort -n one.txt 
3
4
6
7
18
22


以数字进行倒序排列
# sort -nr one.txt 
22
18
7
6
4
3


第二个测试文本
# cat > two.txt
beijing 京 19500 7.7
shanghai 沪 21602 7.7
tianjin 津 14370 12.5
chongqing 渝 12656 12.3


# sort two.txt
beijing 京 19500 7.7
chongqing 渝 12656 12.3
shanghai 沪 21602 7.7
tianjin 津 14370 12.5


以空格分隔每行,第三列进行数字排序
# sort -t ' ' -k 3,3n two.txt 
chongqing 渝 12656 12.3
tianjin 津 14370 12.5
beijing 京 19500 7.7
shanghai 沪 21602 7.7


以空格进行分隔每行,第三列的第2至第3个字符进行按数字排序
# sort -t ' ' -k 3.2,3.3n two.txt
shanghai 沪 21602 7.7
chongqing 渝 12656 12.3
tianjin 津 14370 12.5
beijing 京 19500 7.7


以空格进行分隔每行,第一列的第2至第3个字符进行排序
sort -t ' ' -k 1.2,1.3 two.txt 
beijing 京 19500 7.7
shanghai 沪 21602 7.7
chongqing 渝 12656 12.3
tianjin 津 14370 12.5


以空格进行分隔每行,第一列的第2至第2(即只有第2个)个字符进行排序
# sort -t ' ' -k 1.2,1.2 two.txt 
beijing 京 19500 7.7
chongqing 渝 12656 12.3
shanghai 沪 21602 7.7
tianjin 津 14370 12.5


在上面的基础上添加-u 去除重复
# sort -t ' ' -k 1.2,1.2 -u two.txt
beijing 京 19500 7.7
shanghai 沪 21602 7.7
tianjin 津 14370 12.5


以空格进行分隔每行,第一列的第2至第2(即只有第2个)个字符进行排序
然后在此基础上对第三列进行数字排序
# sort -t ' ' -k 1.2,1.2 -k 3,3n two.txt 
beijing 京 19500 7.7
chongqing 渝 12656 12.3
shanghai 沪 21602 7.7
tianjin 津 14370 12.5

猜你喜欢

转载自nullpoint.iteye.com/blog/2082076