【Linux常见命令】sort命令

sort - sort lines of text files

sort命令用于将文本文件内容加以排序。

sort可针对文本文件的内容,以为单位来排序。

语法:

sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

参数:

sort默认无参数,按照ascii码排序,升序,从小到大

  • -n 依照数值的大小排序
  • -r 以相反的顺序来排序。
  • -u,--unique 去除重复行
    • with -c, check for strict ordering; without -c, output only the
      first of an equal run

    • -u参数,取唯一,不管是否为相邻行
    • [root@oldboy oldboy]# sort uniq.txt
      1
      1
      aa
      aa
      bb
      cc
      dd
      www
      www
      
      [root@oldboy oldboy]# sort uniq.txt -u
      1
      aa
      bb
      cc
      dd
      www
      sort -u 压缩,唯一
      [root@oldboy oldboy]# uniq uniq.txt 
      www
      aa
      bb
      aa
      cc
      dd
      1
      aa
      uniq压缩相邻行
  • -b 忽略每行前面开始出的空格字符。
  • -c 检查文件是否已经按照顺序排序。
    • [root@oldboy oldboy]# cat sort_c.txt
      11
      22
      33
      44
      11
      22
      33
      44
      # 显示第5行的11未按排序要求排序,用于检查排序是否有错误
      [root@oldboy oldboy]# sort -c sort_c.txt 
      sort: sort_c.txt:5: disorder: 11
      sort -c检查排序是否ok
        
  • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  • -f 排序时,将小写字母视为大写字母。
  • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  • -m 将几个排序好的文件进行合并。
  • -M 将前面3个字母依照月份的缩写进行排序。
  • -o<输出文件> 将排序后的结果存入指定的文件。
  • -r 以相反的顺序来排序。
  • -t<分隔字符> 指定排序时所用的栏位分隔字符。
    • -t, --field-separator=SEP
    • 默认的SEP分隔符为空格
    • [root@oldboy oldboy]# sort new.txt
      1-user01
      2-user02
      3-user03
      4-user04
      5-user05
      # 分隔符设置为“-”,取第二列作为排序的条件列,-r倒序
      [root@oldboy oldboy]# sort new.txt -t '-' -k 2 -r
      5-user05
      4-user04
      3-user03
      2-user02
      1-user01
      sort -k 2 指定key,指定-t分隔符,倒序排序
  • -k, --key=POS1[,POS2] 指定起始的排序列

    • -k, --key=POS1[,POS2]
      start a key at POS1 (origin 1), end it at POS2 (default end of line)

  • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

示例: 

# 数据准备
[root@oldboy oldboy]# cat sort_test.txt      
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
test
Hello
hello
Welcome
www.baidu.com


# 以默认的方式对文件进行排序
[root@oldboy oldboy]# sort sort_test.txt 
Hello
Welcome
a
b
c
d
e
f
g
h
hello
i
j
k
l
m
n
o
p
q
r
s
t
test
u
v
w
www.baidu.com
x
y
z
sort默认的排序方式

sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。

注意,ASCII码的对照表如下:https://baike.baidu.com/item/ASCII/309296?fr=aladdin

[root@oldboy oldboy]# sort sort_test.txt -r
z
y
x
www.baidu.com
w
v
u
test
t
s
r
q
p
o
n
m
l
k
j
i
hello
h
g
f
e
d
c
b
a
Welcome
Hello
sort -r 倒序,从大到小
原文地址:https://www.cnblogs.com/zoe233/p/11802572.html