五周第五次课(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
\脱义符号,作用和之前说过的单引号差不多,都是不解析,直接输出。
echo \$a\$b
| head -n 将管道符前面的cat的文件的前n行取出来
cut
-d "分隔符"
-f 选取第几段
-c 选取第几个字符
cut -d ":" -f 1-3
以:为分隔符,选取1-3行
sort 排序
可以看一下特殊符号,数字,字母的排序。
特殊符号排最前面,其次是数字,最后是字母,*会认为是0
-n参数的时候,会以数字大小去排序,但是字母和特殊符号被认为是0所以会在数字前面
-r反序排序
-t分隔符 -kn1/-kn1,n2
wc -l wc是word count 数单词的 -l 是行的意思 所以 wc -l 是 统计多少行
wc -m 统计字符数,因为每一行会有一个换行符,所以每行会多一个字符
-w 统计词 word
以空格或者空字符来区分的
uniq 去重,需要先排序把相同的放在一起,才使用去重。因为不排在一起无法直接uniq去重。看下图
所以就需要先排序,再去重。先用sort 将所有的重新排序,再用管道符uniq去重。如下图。
uniq -c 统计重复次数,如下图
sort和uniq一般连着用比较多
sort uniq wc等都不会对文件本身的内容做出更改
tee和重定向>类似,会把结果打印到屏幕上 如果后面加上文件名会将前面的结果写入到后面的文件中
tee -a 就是追加 类似 >>
tr替换字符, | tr "xx" "mmm" 将管道符前面的字符中的xx换成mmm。 如果想把所有的小写换成大写,可以写成 tr '[a-z]' '[A-Z]' 是一一对应的
split 切割文件 -b 跟大小 默认单位是字节 -l 跟行数 b就是以大小为单位切割 l就是以行为大小切割
例如log文件日积月累,越来越大就需要给切割成若个小的文件
可以从下图看到,切割成了很多个文件
du -sh * 查看每一个都是4k的原因是以块显示
du -sb * 以字节显示,可以看到都是以字节显示的了,按照上面切割时候的大小 1000bite
如果不指定切割的文件名,最后出来的文件都是以x开头后面从a开始接,接到z之后再从b开始,如果不够用就往后加长度。
不仅仅是可以用-b指定大小,还可以同时指定名字的前缀。
然后是-l 来以行为单位切割文件 可以看到6081行的文件切割成了7个文件 6个1000 1一个81
shell特殊符号
多条命令的情况
|| 或 表示如果第一个命令不成功才执行第二个命令,当然不局限于两个命令之间,可以一直往下进行
因为第一个执行成功了,所以第二个没有执行
&& 与,表示但凡遇到一个不成立的,后面都不再执行了。
生活中的场景,shell脚本,想创建一个目录,首先判断这个目录是否存在。
[ -d jiabin] || mkdir jiabin
jiabin是否是一个目录,前面执行失败,也就是没有这个目录的时候,后面才会进行mkdir的操作
原文地址:http://blog.51cto.com/13691454/2107462