shell练习-sort排序详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell练习-sort排序详解相关的知识,希望对你有一定的参考价值。
服务器上有个日志文件guest.log,每行包含:身份证号码,姓名,网吧名称,最近上网时间,上网时长,消费金额,现要求将文件的每行的第六列和第二列取出来按照消费金额倒序输出到另外一个文件test.log,请给出shell命令?
awk "{print $6 $2}" guest.log|sort -rn -o test.log
Sort
1.原理:
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,最后按升序输出。
2.参数介绍
-u 输出结果去重
-r 默认升序,-r降序输出
-n 以数值来排序,不加n选项,会出现19 比 2 小的情况
-o 避免重定向到原文件是内容丢失
-t -k -t可以指定分隔符 -k指定 哪一部分 -t : -k 3 以冒号为分隔符,第三段
-f 忽略大小写 (转换成大写进行比较)
-c 检查文件是否以成功排序,未成功排序,输出相关行的信息并 返回 1
-C 检查文件是否以成功排序,未成功排序,只返回 1
-b 忽略每一行的空白部分,从第一个有效字符开始比较
例如:
1.txt 有以下内容(姓名:性别:年龄)
liming:boy:13
wangsan:boy:12
liling:girl:14
想要按照年龄倒序排序可以: sort -t : -k 3 -rn 1.txt
问题思考与测试:假如加上 -u 相同年纪的人是不是只显示一个
liming:boy:13
wangsan:boy:12
liling:girl:14
liming2:boy:13
如结果所示,加上-u 会去掉比较部分一样的行
本文出自 “share,open source” 博客,请务必保留此出处http://liqilong2010.blog.51cto.com/3029053/1843842
以上是关于shell练习-sort排序详解的主要内容,如果未能解决你的问题,请参考以下文章