sort命令、linux计划任务 àì夳堔傛蜴生んèń 2022-05-10 12:50 525阅读 0赞 一、sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 参数 作用 \-n 数值排序 \-r 降序 \-t 字段分隔符 \-k 以哪个字段为关键字进行排序 \-u 排序后相同的行只显示一次 \-f 排序时忽略字符大小写 1.sort -u 选项(输出行中去除重复行) cat a.txt ![在这里插入图片描述][70] sort -u a.txt ![在这里插入图片描述][70 1] pig的重复行被去除了 cat a.txt ![在这里插入图片描述][70 2] 再查看文件会发现重复行还在,说明-u参数不会对文件本身做修改 2.sort -r (降序) 因为sort默认的排序方式是升序,想执行降序操作用-r ![在这里插入图片描述][70 3] ![在这里插入图片描述][70 4] 在sort 命令中排序程序将这些数字按字符来排序了,排序程序会先比较1和3,显然1小,所以就将10放在3前面 ![在这里插入图片描述][70 5] \-r参数将他们降序排列 3.sort -n (按数值排序) 为了解决将数值当字符处理,就使用-n 参数,告诉sort要以数值排序 ![在这里插入图片描述][70 6] ![在这里插入图片描述][70 7] sort-nr 表示以数值降序 4.sort -o 参数 由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。 但是,如果想把排序结果输出到原文件中,用重定向可就不行了。 ![在这里插入图片描述][70 8] 用重定向会把num清除 这时候sort-o 参数就派上用场了 ![在这里插入图片描述][70 9] 5. sort的-t选项和-k选项 \-t后跟间隔符 \-k 是以列排序 (1) 以第二列排序 ![在这里插入图片描述][70 10] 因为有第二列相同的,sort默认按第一列的字符排序 (2)注意:sort 设定域的优先级,先以第二个域进行排序,如果相同按照第三个域进行排序 ![在这里插入图片描述][70 11] (3 ) 从第一行的第二个字母开始进行排序 ![在这里插入图片描述][70 12] \-k1.2 表示第一个域的第二个字符到 到本域的最后一个字符为止的字符串进行排序。-k1.2,1.2表示用第一个域的第二个字母排序 。如果-k1,2省略了后面的2则就变成了第一个域到最后一个域进行排序 如果第一个域第二个字母相同,默认第二个域升序排列 6.sort -k -u 选项 ![在这里插入图片描述][70 13] ![在这里插入图片描述][70 14] ![在这里插入图片描述][70 15] 当以第二个域进行数值排序时,然后加-u后,dog和pig就被删除了!原来-u只识别用-k设定的域,发现相同,就将后续相同的行都删除。 ![在这里插入图片描述][70 16] 去除第一个域相同的行 ![在这里插入图片描述][70 17] 去除第一个域的第一个字母相同的行 ![在这里插入图片描述][70 18] 这里设置了两层排序优先级的情况下,使用-u就没有删除任何行。原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的 二、linux计划任务 1.crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。可以用以下的方法启动、关闭这个服务: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 2.crontab命令 参数 描述 \-u user 用来设置某个用户的crontab服务 \-l 显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容 \-e 编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件 \-i 在删除用户的crontab文件时给确认提示 \-r 从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件 ![在这里插入图片描述][70 19] 第一个 \* 代表分钟 可以是从0到59之间的任何整数。 第二个 \* 代表小时 可以是从0到23之间的任何整数 第三个\* 代表日 可以是从1到31之间的任何整数。 第四个\* 代表月 可以是从1到12之间的任何整数。 第五个代表星期 可以是从0到7之间的任何整数,这里的0或7代表星期日 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 星号(\*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如\*/10,如果用在minute字段,表示每十分钟执行一次。 练习 1. 每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存文件名格式为bak\_etc\_2018-01-01 touch [t1.sh][] vi [t1.sh][] \#!/bin/bash tar -czf /baupup/bak\_-`date +%F` /etc crontab -e \*\*/4 \* \* \* sh [t1.sh][] ll /backup/ ![在这里插入图片描述][70 20] ![在这里插入图片描述][70 21] ![在这里插入图片描述][70 22] 2. 每周2,4,6备份/var/log/messages文件至/backup/messages\_logs/目录中,保存文件名格式为 bak\_msg\_2018-01-01 ![在这里插入图片描述][70 23] ![在这里插入图片描述][70 24] ![在这里插入图片描述][70 25] 3. 每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/backup/memory文件中 ![在这里插入图片描述][70 26] ![在这里插入图片描述][70 27] ![在这里插入图片描述][70 28] 4. 工作日的时间内,每两小时执行一次echo “hello work” ![在这里插入图片描述][70 29] ![在这里插入图片描述][70 30] [70]: /images/20220505/54a38b46c4714ad698fa76601469734d.png [70 1]: /images/20220505/4ab4c5930a74455eada0cf2dc9360d6a.png [70 2]: /images/20220505/34ae8ca1921548ee82502055de82b974.png [70 3]: /images/20220505/18598a9c288f4817abcddd74cdc4dff7.png [70 4]: /images/20220505/7890c9f8d534493891b5aff58a0271cc.png [70 5]: /images/20220505/abf28d2987064d05a1d49aeb53318d72.png [70 6]: /images/20220505/bf11d59abd2741eea7a370a70da1cfb7.png [70 7]: /images/20220505/5fdd42e27f2f4e72b93cd54d1e6a4340.png [70 8]: /images/20220505/f450b219333442db922411fbc2fecd86.png [70 9]: /images/20220505/dfbd142db9e343fc91b8683cfba442af.png [70 10]: /images/20220505/2101f99c4ad2474f80ff4d0f2eb17b99.png [70 11]: /images/20220505/0c2e98dc4fb746cd9e6f69187ea423c2.png [70 12]: /images/20220505/307236db2c234b58ac9773539e3d2985.png [70 13]: /images/20220505/50b648060ca04795a42f19ee33e58625.png [70 14]: /images/20220505/c3e506bbadef4426b52c499ec9e764b4.png [70 15]: /images/20220505/6aa58731f8c04a3b8d4f3dd775a843ed.png [70 16]: /images/20220505/14465e6683444c4ba050c214cc2a5519.png [70 17]: /images/20220505/1bba81dc61074144a3dcbc0d8758b28a.png [70 18]: /images/20220505/fffc32215e4244ed9d07f5f3d638089f.png [70 19]: /images/20220505/4e02e7ef7b9b45e788b4fd124d2bdf92.png [t1.sh]: http://t1.sh [70 20]: /images/20220505/5a15d7fcb5754e7fb675b8662ecad9be.png [70 21]: /images/20220505/b9bcef1239e84d51b1019e438199a614.png [70 22]: /images/20220505/ad30943e8781438d83675d6c296433bc.png [70 23]: /images/20220505/efefcdf85b1047a69de13feac77ca7ab.png [70 24]: /images/20220505/727e84744c6f4fb5b971a18646365df6.png [70 25]: /images/20220505/e5c3f574cf4c40529786eaa3244e182c.png [70 26]: /images/20220505/74ed3861b8c74688b742ec43861eafd6.png [70 27]: /images/20220505/e3aa9e9228fc4177869e1629a75c7120.png [70 28]: /images/20220505/272c5988f577484ab1c4fdee82f0db5b.png [70 29]: /images/20220505/f909f9e364fc4316bec08642b60fdba3.png [70 30]: /images/20220505/9fbb6ca6530a4bcf94d6bb9e6d7ae943.png
还没有评论,来说两句吧...