五周第五次课(4月24日)

8.10 shell特殊符号cut命令
8.11 sort_wc_uniq命令
8.12 tee_tr_split命令
8.13 shell特殊符号下
相关测验题目:http://ask.apelearn.com/question/5437
扩展
1. source exec 区别 http://alsww.blog.51cto.com/2001924/1113112
2. Linux特殊符号大全http://ask.apelearn.com/question/7720
3. sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975



Linux20180424五周第五次课(4月24日)_第1张图片


\脱义符号,作用和之前说过的单引号差不多,都是不解析,直接输出。

echo \$a\$b

Linux20180424五周第五次课(4月24日)_第2张图片



Linux20180424五周第五次课(4月24日)_第3张图片


| head -n 将管道符前面的cat的文件的前n行取出来

Linux20180424五周第五次课(4月24日)_第4张图片


cut

 -d "分隔符"

 -f 选取第几段

-c 选取第几个字符


cut -d ":" -f 1-3 

以:为分隔符,选取1-3行

Linux20180424五周第五次课(4月24日)_第5张图片

Linux20180424五周第五次课(4月24日)_第6张图片

image.png


sort 排序

Linux20180424五周第五次课(4月24日)_第7张图片

可以看一下特殊符号,数字,字母的排序。

Linux20180424五周第五次课(4月24日)_第8张图片

特殊符号排最前面,其次是数字,最后是字母,*会认为是0


-n参数的时候,会以数字大小去排序,但是字母和特殊符号被认为是0所以会在数字前面


Linux20180424五周第五次课(4月24日)_第9张图片


-r反序排序


-t分隔符  -kn1/-kn1,n2


wc -l wc是word count 数单词的 -l 是行的意思 所以 wc -l 是 统计多少行

image.png


wc -m 统计字符数,因为每一行会有一个换行符,所以每行会多一个字符

Linux20180424五周第五次课(4月24日)_第10张图片

-w 统计词 word

image.png 以空格或者空字符来区分的



uniq 去重,需要先排序把相同的放在一起,才使用去重。因为不排在一起无法直接uniq去重。看下图

Linux20180424五周第五次课(4月24日)_第11张图片

所以就需要先排序,再去重。先用sort 将所有的重新排序,再用管道符uniq去重。如下图。

Linux20180424五周第五次课(4月24日)_第12张图片

uniq -c 统计重复次数,如下图

Linux20180424五周第五次课(4月24日)_第13张图片

sort和uniq一般连着用比较多


sort uniq wc等都不会对文件本身的内容做出更改



tee和重定向>类似,会把结果打印到屏幕上 如果后面加上文件名会将前面的结果写入到后面的文件中

image.png

Linux20180424五周第五次课(4月24日)_第14张图片



tee -a 就是追加 类似 >>

Linux20180424五周第五次课(4月24日)_第15张图片  


tr替换字符, | tr "xx" "mmm" 将管道符前面的字符中的xx换成mmm。 如果想把所有的小写换成大写,可以写成 tr '[a-z]' '[A-Z]'  是一一对应的

Linux20180424五周第五次课(4月24日)_第16张图片


Linux20180424五周第五次课(4月24日)_第17张图片



split 切割文件  -b 跟大小 默认单位是字节  -l 跟行数 b就是以大小为单位切割 l就是以行为大小切割

例如log文件日积月累,越来越大就需要给切割成若个小的文件

可以从下图看到,切割成了很多个文件




Linux20180424五周第五次课(4月24日)_第18张图片

du -sh * 查看每一个都是4k的原因是以块显示

Linux20180424五周第五次课(4月24日)_第19张图片

du -sb * 以字节显示,可以看到都是以字节显示的了,按照上面切割时候的大小 1000bite

Linux20180424五周第五次课(4月24日)_第20张图片

如果不指定切割的文件名,最后出来的文件都是以x开头后面从a开始接,接到z之后再从b开始,如果不够用就往后加长度。


Linux20180424五周第五次课(4月24日)_第21张图片


不仅仅是可以用-b指定大小,还可以同时指定名字的前缀。

image.png


然后是-l 来以行为单位切割文件 可以看到6081行的文件切割成了7个文件 6个1000 1一个81


Linux20180424五周第五次课(4月24日)_第22张图片



















shell特殊符号

Linux20180424五周第五次课(4月24日)_第23张图片

多条命令的情况

Linux20180424五周第五次课(4月24日)_第24张图片

Linux20180424五周第五次课(4月24日)_第25张图片

Linux20180424五周第五次课(4月24日)_第26张图片


|| 或 表示如果第一个命令不成功才执行第二个命令,当然不局限于两个命令之间,可以一直往下进行

Linux20180424五周第五次课(4月24日)_第27张图片

因为第一个执行成功了,所以第二个没有执行

image.png

&& 与,表示但凡遇到一个不成立的,后面都不再执行了。

image.png

Linux20180424五周第五次课(4月24日)_第28张图片


生活中的场景,shell脚本,想创建一个目录,首先判断这个目录是否存在。

[ -d jiabin] || mkdir jiabin

jiabin是否是一个目录,前面执行失败,也就是没有这个目录的时候,后面才会进行mkdir的操作


image.png