Linux教程(10.3)-文本处理命令

2008-02-23 05:30:33来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Sort命令

sort命令的功能是对文档中的各行进行排序。sort命令有许多很实用的选项,这些选项最初是用来对数据库格式的文档内容进行各种排序操作的。实际上,sort命令能够被认为是个很强大的数据管理工具,用来管理内容类似数据库记录的文档。

Sort命令将逐行对文档中的内容进行排序,假如两行的首字符相同,该命令将继续比较这两行的下一字符,假如还相同,将继续进行比较。

语法:

sort [选项] 文档

说明:sort命令对指定文档中任何的行进行排序,并将结果显示在标准输出上。如不指定输入文档或使用“- ”,则表示排序内容来自标准输入。

sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。

改变缺省配置的选项主要有:

- m 若给定文档已排好序,合并文档。

- c 检查给定文档是否已排好序,假如他们没有都排好序,则打印一个出错信息,并以状态值1退出。

- u 对排序后认为相同的行只留其中一行。

- o 输出文档 将排序输出写到输出文档中而不是标准输出,假如输出文档是输入文档之一,sort先将该文档的内容写入一个临时文档,然后再排序和写输出结果。

改变缺省排序规则的选项主要有:

- d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。

- f 将小写字母和大写字母同等对待。

- I 忽略非打印字符。

- M 作为月份比较:“JAN”<“FEB”<¼ <“DEC”。

- r 按逆序输出排序结果。

+posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。

- b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。

- t separator 指定字符separator作为字段分隔符。

下面通过几个例子来讲述sort的使用。


用sort命令对text文档中各行排序后输出其结果。请注意,在原文档的第二、三行上的第一个单词完全相同,该命令将从他们的第二个单词vegetables和fruit的首字符处继续进行比较。

$ cat text

vegetable soup

fresh vegetables

fresh fruit

lowfat milk

 

$ sort text

fresh fruit

fresh vegetables

lowfat milk

vegetable soup

用户能够保存排序后的文档内容,或把排序后的文档内容输出至打印机。下例中用户把排序后的文档内容保存到名为result的文档中。

$ sort text>result


以第2个字段作为排序关键字对文档example的内容进行排序。

$ sort 1-2 example


对于file1和file2文档内容反向排序,结果放在outfile中,利用第2个字段的第一个字符作为排序关键字。

$ sort -r -o outfile 1.0 -1.1 example


sort排序常用于在管道中和其他命令连用,组合完成比较复杂的功能,如利用管道将当前工作目录中的文档送给sort进行排序,排序关键字是第6个至第8个字段。

$ ls - l | sort 5 - 7

sort命令也能够对标准输入进行操作。例如,假如您想把几个文档文本行合并,并对合并后的文本行进行排序,您能够首先用命令cat把多个文档合并,然后用管道操作把合并后的文本行输入给命令sort,sort命令将输出这些合并及排序后的文本行。在下面的例子中,文档veglist和文档fruitlist的文本行经过合并和排序后被保存到文档clist中。

$ cat veglist fruitlist | sort > clist

 

uniq命令

文档经过处理后在他的输出文档中可能会出现重复的行。例如,使用cat命令将两个文档合并后,再使用sort命令进行排序,就可能出现重复行。这时能够使用uniq命令将这些重复行从输出文档中删除,只留下每条记录的唯相同本。

语法:uniq [选项] 文档

说明:这个命令读取输入文档,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文档中。输入文档和输出文档必须不同。假如输入文档用“- ”表示,则从标准输入读取。

该命令各选项含义如下:、

- c 显示输出中,在每行行首加上本行在文档中出现的次数。他可取代- u和- d选项。

- d 只显示重复行。

- u 只显示文档中不重复的各行。

- n 前n个字段和每个字段前的空白一起被忽略。一个字段是个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

- f n 和- n相同,这里n是字段数。

- s n 和+n相同,这里n是字符数。

例如:

1. 显示文档example中不重复的行。

uniq - u example

2. 显示文档example中不重复的行,从第2个字段的第2个字符开始做比较。

uniq - u - 1 1 example




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Linux教程(10.4)-文档内容统计命令

下一篇: Linux教程(10.2)-文档内容查询命令

热门词条
热门标签