linux sort排序。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux sort排序。相关的知识,希望对你有一定的参考价值。

目录下有server20120301-20120309.tar9个文件和client20120301-20120309.tar9个文件。用ls | sort -n排序是server的全排在的client的后面。不是按数值排序的吗?怎么会出现这样的结果?如果只按数值排序而不考虑字母的话该怎么写呢?

sort 默认使用从首字符向后,依次按ASCII码值进行比较
所以你那边结果正常正确

要想得到你要的结果 熟悉下sort

看官肯定都是买菜级别的 俺就随意发个快餐型命令

ls |sort -n -k 1.7,1.13追问

还是不行了,我现在是想要把目录下的文件按文件名中的数值大小排序,文件名中的字母是不规则的,有长有短。这个用sort能做到吗?

追答

理论可以 俺不懂

参考技术A filename="test.txt"
sed -n '1p' "$filename"
sed -n '2,$/^[a-za-z]/p' "$filename" | sort
sed -n '2,$/^\//p' "$filename" | sort以上脚本对文本文件test.txt按上述要求排序输出

Linux基础:sort命令总结

本文只总结一些常用的用法,更详细的说明见man sortsort --help

sort命令

sort命令用于串联排序指定文件并将结果写到标准输出。

sort可以指定按照何种排序规则进行排序,如按照当前字符集排序规则(这是默认排序规则)、按照字典排序规则、按照数值排序规则、按照月份排序规则、按照文件大小格式(K<M<G)。还可以去除重复行,指定降序或升序(默认)的排序方式。

字符集排序、字段排序的顺序:
空字符串<空白字符<数值<a<A<b<B<...<z<Z

语法格式

Usage: sort [OPTION]... [FILE]...
  or:  sort [OPTION]... --files0-from=F

选项说明

OPTION 说明
-c 检测给定的文件是否已经排序。如未排序,则会输出诊断信息,提示从哪一行开始乱序。
-b 忽略字段前面的空格。若空格数量不固定时,推荐使用。"-n"选项隐含该选项。
-d 按照字典顺序排序,只支持字母、数值、空格。
-f 将所有小写字母等同于大写字母。
-k 指定要排序的key。
-n 按数值排序。
-o 将结果输出到指定文件中。
-r 降序排序。
-t 指定字段分隔符。

实例

测试文本1.txt

ZZ 2DF
AA 330
Sa n22
dB ss2
DD 231
   Aa 500
bB 300
CC 222
BB 200

示例

# 默认的排序规则为字符集排序规则,且为升序
[[email protected] ~]# sort 1.txt
AA 330
   Aa 500
BB 200
bB 300
CC 222
dB ss2
DD 231
Sa n22
ZZ 2DF

# 将小写字母等同于大写字母
[[email protected] ~]# sort -f 1.txt
   Aa 500
AA 330
BB 200
bB 300
CC 222
dB ss2
DD 231
Sa n22
ZZ 2DF


# 降序
[[email protected] ~]# sort -r 1.txt
ZZ 2DF
Sa n22
DD 231
dB ss2
CC 222
bB 300
BB 200
   Aa 500
AA 330

# 根据第二列排序,分隔符为空格
[[email protected] ~]# sort -t $' ' -k2 1.txt
BB 200
CC 222
DD 231
ZZ 2DF
bB 300
AA 330
   Aa 500
Sa n22
dB ss2

# 将以上结果输出到2.txt
[[email protected] ~]# sort -t $' ' -k2 1.txt -o 2.txt
[[email protected] ~]# cat 2.txt
BB 200
CC 222
DD 231
ZZ 2DF
bB 300
AA 330
   Aa 500
Sa n22
dB ss2

以上是关于linux sort排序。的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础:sort命令总结

linux sort排序。

Linux排序命令sort(转)

linux 排序命令sort

Linux sort 排序

Linux 排序命令之 sort, wc, uniq