sort和uniq命令详解
文章目录
简介
同文本文件打交道时,总避不开排序,那是因为对于文本处理任务而言,排序(sort)可以起到不小的作用。sort命令能够帮助我们对文本文件和stdin进行排序操作。通常,它会结合其他命令来生产所需要的输出。uniq是一个经常与sort一同使用的命令。它的作用是从文本或stdin中提取单一的行。
sort
sort命令既可以从特定的文件,也可以从stdin中获取输入,并将输出写入stdont。uniq 的工作模式和sort—样,
处理大量数据时的一个常用命令是sort命令。顾名思义,sort命令是对数据进行排序的。
默认情况下,sort命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。
默认情况下,sort命令会把数字当做字符来执行标准的字符排序.产生的输出可能根本就不是你要的。解决这个问题可用-n参数,它会告诉sort命令把数字识别成数字而不是字符,并且按值排序。
另一个常用的参数是-M,按月排序。Linux的日志文件经常会在每行的起始位置有一个时间戳,用来表明事件是什么时候发生的.
Sep 13 07:10:09 testbox smartd[2718]: Device: /dev/sda, opened
如果用-M参数,sort命令就能识别三字符的月份名,并相应地排序。
-k和-t参数在对按字段分隔的数据进行排序时非常有用,例如/etc/passwd文件。可以用-t 参数来指定字段分隔符,然后用-k参数来指定排序的字段。举个例子,要对前面提到的密码文件 /etc/passwd根据用户ID进行数值排序,可以这么做:
$ sort -t ':' -k 3 -n /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
adm❌3:4:adm:/var/adm:/sbin/nologin
lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
sync❌5:0:sync:/sbin:/bin/sync
shutdown❌6:0:shutdown:/sbin:/sbin/shutdown
halt❌7:0:halt:/sbin:/sbin/halt
mail❌8:12:mail:/var/spool/mail:/sbin/nologin
news❌9:13:news:/etc/news:
uucp❌10:14:uucp:/var/spool/uucp:/sbin/nologin
operator❌11:0:operator:/root:/sbin/nologin
games❌12💯games:/usr/games:/sbin/nologin
gopher❌13:30:gopher:/var/gopher:/sbin/nologin
ftp❌14:50:FTP User:/var/ftp:/sbin/nologin
现在数据已经按第三个字段——用户ID的数值排序。
还可以用下面的方法测试一个文件是否已经被排过序:
uniq
文章作者 Forz
上次更新 2017-09-09