服务器上有个日志文件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

wKioL1fDx8KgtG-eAABHLHW5N3I134.jpg-wh_50

问题思考与测试:假如加上 -u 相同年纪的人是不是只显示一个

liming:boy:13

wangsan:boy:12

liling:girl:14

liming2:boy:13

wKiom1fDyDyRxbksAABOS0iCp8I517.jpg-wh_50

如结果所示,加上-u 会去掉比较部分一样的行


欢迎打算使用阿里云服务器的小伙伴,加我私聊!!QQ:3533470970  或直接领取阿里云幸运券:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=b6h928qb&utm_source=b6h928qb