命令组包含三个命令:grep,egrep,fgerp
egrep是gerp搜索的指定模式等同grep -E 使用扩展字符串进行搜索。fgerp等同grep -F 快速搜索命令,只检索固定字符串。
sort命令对文本文件进行排序,今天对这个命令进行探究。
默认情况下,排序关键字的顺序有系统使用的字符集(ASCII码)决定。
1.sort [选项] 文件列表
sort默认是按照ASCII码从小到大排序
例如:
//使用cat查看文件内容 [bestcoder@localhost test]$ cat f1 bbbbbb aaaaaa ccccbb ccccaa [bestcoder@localhost test]$ sort f1 aaaaaa bbbbbb ccccaa ccccbb
[bestcoder@localhost test]$ cat f5 aaaaaaa AAAAAAA BBBBBBB [bestcoder@localhost test]$ sort f5 aaaaaaa AAAAAAA BBBBBBB这里我们发现一个奇怪的问题,在ASCII中,A为065而a为097,这样的排序顺序明显是不符合的,我们如何更改呢?
查看语言环境变量的本地配置, $locale ...... LC_ALL=zh_CN.GB18030 $ sort f5 //查看当前排序情况 然后: $ export LC_ALL=C $ sort f5 //查看更改后的排序情况 结果为: [bestcoder@localhost test]$ sort f5 AAAAAAA BBBBBBB aaaaaaa
2.常用选项:
-m 对已排序的文件进行合并,但并不排序。
[bestcoder@localhost test]$ cat f2 aaaabb dddddd bbbbbb [bestcoder@localhost test]$ cat f1 bbbbbb aaaaaa ccccbb ccccaa [bestcoder@localhost test]$ sort -m f1 f2 aaaabb bbbbbb aaaaaa ccccbb ccccaa dddddd bbbbbb
[bestcoder@localhost test]$ sort -c f1 sort:f1:2:无序: aaaaaa
-u 对排序后的重复行只输出第一行,与-c一起用时严格按照顺序检查。
[bestcoder@localhost test]$ cat f3 bbbbbb cccccc aaaaab abbbbb bbbbbb [bestcoder@localhost test]$ sort -u f3 aaaaab abbbbb bbbbbb cccccc
[bestcoder@localhost test]$ cat f3 bbbbbb cccccc aaaaab abbbbb bbbbbb [bestcoder@localhost test]$ sort -u -of8 f3 //将f3去重排序后得到的结果指定到f8文件(若f8不存在,则自动创建) [bestcoder@localhost test]$ cat f8 aaaaab abbbbb bbbbbb cccccc
[bestcoder@localhost test]$ cat f5 aaaaaaa AAAAAAA BBBBBBB [bestcoder@localhost test]$ sort -f f5 AAAAAAA aaaaaaa BBBBBBB -r 按逆序排列 [bestcoder@localhost test]$ sort f5 AAAAAAA BBBBBBB aaaaaaa [bestcoder@localhost test]$ sort -r f5 aaaaaaa BBBBBBB AAAAAAA
-t 指定字符作为字段间的分隔符,一般与-k一起使用达到排序效果
-k n1[,n2] 指定从文本行第n1字段开始至第n2字段(不包括n2字段)中间的内容作为排序关键字。如果没有n2,则文本行第n1字段开始至末尾。
n1和n2可以是小数形式,x.y,x表示第x字段,y表示第x字段的第y个字符。
//假如我们将日期按照月份进行升序排列,如何操作呢? [bestcoder@localhost test]$ cat f5 2015-12-3 2013-2-2 2020-4-02 1022-8-5 [bestcoder@localhost test]$ sort -n -k 2 -t - f5 //-n 数值 -k 2 第二个字段作为排序关键字 -t - 以-为排序分隔符 2013-2-2 2020-4-02 1022-8-5 2015-12-3 可以看出月份按升序排列2、4、8、12
[bestcoder@localhost test]$ sort f2 BAA AAAA aaaa [bestcoder@localhost test]$ sort -b f2 AAAA BAA aaaa