AIX下sort命令简介及使用

来源:互联网 发布:lol挂机软件 免费版 编辑:程序博客网 时间:2024/04/29 21:51
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.txtpg video.txtBoys in Company C:HK:192:2192Alien:HK:119:1982The Hill:KL:63:2972Aliens:HK:532:4892Star Wars:HK:301:4102A Few Good Men:KL:445:5851Toy Story:HK:239:3972A google:HK其中“:”为域分隔符号,下面使用"-t:"标识相连的域之间以":"分隔。正序排列:pg video.txtBoys in Company C:HK:192:2192Alien:HK:119:1982The Hill:KL:63:2972Aliens:HK:532:4892Star Wars:HK:301:4102A Few Good Men:KL:445:5851Toy Story:HK:239:3972A google:HK逆序排列:sort -t: -r video.txtToy Story:HK:239:3972The Hill:KL:63:2972Star Wars:HK:301:4102Boys in Company C:HK:192:2192Aliens:HK:532:4892Alien:HK:119:1982A google:HKA Few Good Men:KL:445:5851按指定域排列第一个域:sort -t: +1 video.txtA google:HKAlien:HK:119:1982Boys in Company C:HK:192:2192Toy Story:HK:239:3972Star Wars:HK:301:4102Aliens:HK:532:4892①A Few Good Men:KL:445:5851②The Hill:KL:63:2972第二个域:sort -t: +2 video.txtA google:HKAlien:HK:119:1982Boys in Company C:HK:192:2192Toy Story:HK:239:3972Star Wars:HK:301:4102A Few Good Men:KL:445:5851②Aliens:HK:532:4892①The Hill:KL:63:2972第三个域:sort -t: +3n video.txtA google:HKAlien:HK:119:1982Boys in Company C:HK:192:2192The Hill:KL:63:2972Toy Story:HK:239:3972Star Wars:HK:301:4102Aliens:HK:532:4892A Few Good Men:KL:445:5851去除重复的行,我们先给文件增加重复的行:pg video.txtBoys in Company C:HK:192:2192...A google:HKA google:HK使用-u选项去除重复的行:sort -u video.txtA Few Good Men:KL:445:5851A google:HKAlien:HK:119:1982Aliens:HK:532:4892Boys in Company C:HK:192:2192Star Wars:HK:301:4102The Hill:KL:63:2972Toy Story:HK:239:3972使用k做键值排序,按顺序给域编号,第一个域为k1,第二个域为k2,依次类推。先按照第4个域排序,在按照第1个域进行排序sort -t: -r -k4 -k1 video.txtA Few Good Men:KL:445:5851Aliens:HK:532:4892Star Wars:HK:301:4102Toy Story:HK:239:3972The Hill:KL:63:2972Boys in Company C:HK:192:2192Alien:HK:119:1982①A google:HK:301:1982②A google:HKpos的用法:指定域中字母的位置。格式:sort +field_number.characters_in意思:从field_number的第characters_in个字符开始排序例如:Field0Field1Field2Field3AliensH K 1 L53248920 1 2 3sort -t: +1.2 video.txtAliens:HK1l:532:4892A google:HK10:301:1982The Hill:KL23:63:2972Star Wars:HK38:301:4102Boys in Company C:HK48:192:2192Alien:HK57:119:1982Toy Story:HK65:239:3972A Few Good Men:KL87:445:5851域标识从0开始,第一个域的下标为0,类似c语言中的数组下标从0开始。从第一个域的第二个字符开始排序:sort -t: +0.1 video.txtA Few Good Men:KL87:445:5851A google:HK10:301:1982The Hill:KL23:63:2972Alien:HK57:119:1982Aliens:HK1l:532:4892Toy Story:HK65:239:3972Boys in Company C:HK48:192:2192Star Wars:HK38:301:4102显示排序后的开始几行或者最后几行按第4个域进行排序,然后显示前2行:sort -t: -k4 video.txt | head -2A google:HK10:301:1982Alien:HK57:119:1982从第1个域的第三个字符开始排序,查看最后1行数据:sort -t: +0.2 video.txt |tail -1Boys in Company C:HK48:192:2192另外,通过head和tail命令还可以查看文件的头或者尾部一行或多行数据。pg video.txtBoys in Company C:HK48:192:2192Alien:HK57:119:1982The Hill:KL23:63:2972Aliens:HK1l:532:4892Star Wars:HK38:301:4102A Few Good Men:KL87:445:5851Toy Story:HK65:239:3972A google:HK10:301:19821.查看video.txt文件的头3行:head -3 video.txtBoys in Company C:HK48:192:2192Alien:HK57:119:1982The Hill:KL23:63:29722.查看video.txt文件的最后2行:tail -2 video.txtToy Story:HK65:239:3972A google:HK10:301:19823.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 file2pg video2.txtCrimson Tide:134:2031Die Hard:152:2981pg video.txtBoys in Company C:HK48:192:2192Alien:HK57:119:1982The Hill:KL23:63:2972Aliens:HK1l:532:4892Star Wars:HK38:301:4102A Few Good Men:KL87:445:5851Toy Story:HK65:239:3972A google:HK10:301:1982合并:sort -t: -m video2.txt video.txtBoys in Company C:HK48:192:2192Alien:HK57:119:1982Crimson Tide:134:2031①Die Hard:152:2981②The Hill:KL23:63:2972Aliens:HK1l:532:4892Star Wars:HK38:301:4102A Few Good Men:KL87:445:5851Toy Story:HK65:239:3972A 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 iplist191.168.1.55    Scott191.168.2.36    Tim Cook191.168.2.56    Davaid191.168.1.80    Albert191.168.1.20    Thomas191.168.2.155   _yeeXun191.168.2.253   J.Wong下面对ip地址进行排序,以"."作为分隔符,分隔出4个域;先按照第3个域排序,再按照第4个域进行排序,注意:数字域0表示第一个域,后跟着字母"n"。sort -t. +2n +3n iplist191.168.1.20    Thomas191.168.1.55    Scott191.168.1.80    Albert191.168.2.155   _yeeXun191.168.2.253   J.Wong191.168.2.36    Tim Cook191.168.2.56    Davaid
--the end--