感谢支持
我们一直在努力

AIX下sort命令简介及使用

sort命令将许多不同的域按不同的列顺序排序,sort命令如下: 
sort -cmu -o output_file [other options] +pos1 +pos2 input_files 
-c:测试文件是否已经排序 
-m:合并两个排序文件 
-u:删除所有重复行 
-o:存储sort结果的输出文件名 
其他选项: 
-b:使用域进行排序时,忽略第一个空格 
-n:指定排序是域上的数字排序 
-t:域分隔符,用非空格或tab键分隔域 
-r:反序或者逆序 
+n:n为域号,使用此域号开始排序 
n:n为域号,在排序比较时忽略次域,一般与+n一起使用 
pos1:传递到m,n;m为域号,n为开始排序字符数; 
    例如4,6为第5个域,从第7个字符开始 
 
域分隔符:默认情况下,sort认为一个空格或一系列空格为分隔符; 
排序键,第一个域就是排序键1,第二个域就是排序键2,依次类推。 
排序的时候,先按排序键1排序,接着按照排序键2排序,依次类推。 
排序的时候,每个域中按照字符或者数字或者符号的ASCII码进行比较,空格的ASCII为32。 
按照数值域进行分类,在域号后面加n。 
文件video.txt 
pg video.txt 
Boys in Company C:HK:192:2192 
Alien:HK:119:1982 
The Hill:KL:63:2972 
Aliens:HK:532:4892 
Star Wars:HK:301:4102 
A Few Good Men:KL:445:5851 
Toy Story:HK:239:3972 
A google:HK 
其中“:”为域分隔符号,下面使用”-t:”标识相连的域之间以”:”分隔。 
正序排列: 
pg video.txt 
Boys in Company C:HK:192:2192 
Alien:HK:119:1982 
The Hill:KL:63:2972 
Aliens:HK:532:4892 
Star Wars:HK:301:4102 
A Few Good Men:KL:445:5851 
Toy Story:HK:239:3972 
A google:HK 
 
逆序排列: 
sort -t: -r video.txt 
Toy Story:HK:239:3972 
The Hill:KL:63:2972 
Star Wars:HK:301:4102 
Boys in Company C:HK:192:2192 
Aliens:HK:532:4892 
Alien:HK:119:1982 
A google:HK 
A Few Good Men:KL:445:5851 
 
按指定域排列 
第一个域: 
sort -t: +1 video.txt 
A google:HK 
Alien:HK:119:1982 
Boys in Company C:HK:192:2192 
Toy Story:HK:239:3972 
Star Wars:HK:301:4102 
Aliens:HK:532:4892      ① 
A Few Good Men:KL:445:5851  ② 
The Hill:KL:63:2972 
第二个域: 
sort -t: +2 video.txt 
A google:HK 
Alien:HK:119:1982 
Boys in Company C:HK:192:2192 
Toy Story:HK:239:3972 
Star Wars:HK:301:4102 
A Few Good Men:KL:445:5851  ② 
Aliens:HK:532:4892      ① 
The Hill:KL:63:2972 
第三个域: 
sort -t: +3n video.txt 
A google:HK 
Alien:HK:119:1982 
Boys in Company C:HK:192:2192 
The Hill:KL:63:2972 
Toy Story:HK:239:3972 
Star Wars:HK:301:4102 
Aliens:HK:532:4892 
A Few Good Men:KL:445:5851 
 
去除重复的行,我们先给文件增加重复的行: 
pg video.txt 
Boys in Company C:HK:192:2192 
… 
A google:HK 
A google:HK 
使用-u选项去除重复的行: 
sort -u video.txt 
A Few Good Men:KL:445:5851 
A google:HK 
Alien:HK:119:1982 
Aliens:HK:532:4892 
Boys in Company C:HK:192:2192 
Star Wars:HK:301:4102 
The Hill:KL:63:2972 
Toy Story:HK:239:3972 
 
使用k做键值排序,按顺序给域编号,第一个域为k1,第二个域为k2,依次类推。 
先按照第4个域排序,在按照第1个域进行排序 
sort -t: -r -k4 -k1 video.txt 
A Few Good Men:KL:445:5851 
Aliens:HK:532:4892 
Star Wars:HK:301:4102 
Toy Story:HK:239:3972 
The Hill:KL:63:2972 
Boys in Company C:HK:192:2192 
Alien:HK:119:1982  ① 
A google:HK:301:1982    ② 
A google:HK pos的用法:指定域中字母的位置。
格式:sort +field_number.characters_in
意思:从field_number的第characters_in个字符开始排序
例如:
Field0 Field1 Field2 Field3
Aliens H K 1 L 532 4892
0 1 2 3
sort -t: +1.2 video.txt
Aliens:HK1l:532:4892
A google:HK10:301:1982
The Hill:KL23:63:2972
Star Wars:HK38:301:4102
Boys in Company C:HK48:192:2192
Alien:HK57:119:1982
Toy Story:HK65:239:3972
A Few Good Men:KL87:445:5851
域标识从0开始,第一个域的下标为0,类似C语言中的数组下标从0开始。

从第一个域的第二个字符开始排序:
sort -t: +0.1 video.txt
A Few Good Men:KL87:445:5851
A google:HK10:301:1982
The Hill:KL23:63:2972
Alien:HK57:119:1982
Aliens:HK1l:532:4892
Toy Story:HK65:239:3972
Boys in Company C:HK48:192:2192
Star Wars:HK38:301:4102

显示排序后的开始几行或者最后几行
按第4个域进行排序,然后显示前2行:
sort -t: -k4 video.txt | head -2
A google:HK10:301:1982
Alien:HK57:119:1982

从第1个域的第三个字符开始排序,查看最后1行数据:
sort -t: +0.2 video.txt |tail -1
Boys in Company C:HK48:192:2192

另外,通过head和tail命令还可以查看文件的头或者尾部一行或多行数据。
pg video.txt
Boys in Company C:HK48:192:2192
Alien:HK57:119:1982
The Hill:KL23:63:2972
Aliens:HK1l:532:4892
Star Wars:HK38:301:4102
A Few Good Men:KL87:445:5851
Toy Story:HK65:239:3972
A google:HK10:301:1982
1.查看video.txt文件的头3行:
head -3 video.txt
Boys in Company C:HK48:192:2192
Alien:HK57:119:1982
The Hill:KL23:63:2972
2.查看video.txt文件的最后2行:
tail -2 video.txt
Toy Story:HK65:239:3972
A google:HK10:301:1982
3.head和tail命令,若没指定显示行的话,默认显示10行。

结合awk命令使用:
sort -t: -k4 video.txt | tail -1 | awk -F: ‘{print “The highest is ” $4}’
The highest is 5851

使用-m将两个文件合并,格式:sort -m file1 file2
pg video2.txt
Crimson Tide:134:2031
Die Hard:152:2981

pg video.txt
Boys in Company C:HK48:192:2192
Alien:HK57:119:1982
The Hill:KL23:63:2972
Aliens:HK1l:532:4892
Star Wars:HK38:301:4102
A Few Good Men:KL87:445:5851
Toy Story:HK65:239:3972
A google:HK10:301:1982

合并:sort -t: -m video2.txt video.txt
Boys in Company C:HK48:192:2192
Alien:HK57:119:1982
Crimson Tide:134:2031 ①
Die Hard:152:2981 ②
The Hill:KL23:63:2972
Aliens:HK1l:532:4892
Star Wars:HK38:301:4102
A Few Good Men:KL87:445:5851
Toy Story:HK65:239:3972
A google:HK10:301:1982

查看磁盘信息,并按照第四个域排序
df | sort +4
/dev/boot 30720 10693 20027 35% /stand
/dev/root 72986472 48856763 24129709 67% /
Filesystem 1024-blocks Used Available Capacity Mounted on

下面IP地址中,对IP进行排序。
pg iplist
191.168.1.55 Scott
191.168.2.36 Tim Cook
191.168.2.56 Davaid
191.168.1.80 Albert
191.168.1.20 Thomas
191.168.2.155 _yeeXun
191.168.2.253 J.Wong
下面对ip地址进行排序,以”.”作为分隔符,分隔出4个域;
先按照第3个域排序,再按照第4个域进行排序,
注意:数字域0表示第一个域,后跟着字母”n”。
sort -t. +2n +3n iplist
191.168.1.20 Thomas
191.168.1.55 Scott
191.168.1.80 Albert
191.168.2.155 _yeeXun
191.168.2.253 J.Wong
191.168.2.36 Tim Cook
191.168.2.56 Davaid 

赞(0) 打赏
转载请注明出处:服务器评测 » AIX下sort命令简介及使用
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏