学过了不代表你知道了,掌握了不代表你能一直记得,温故而知新。辛辛苦苦学完的Shell全部抛到九霄云外了。。。。。
借助周末好时光,带上五姑娘,把shell相关的知识随意的复习,分享一下。
Shell的基本操作就不说了,聊一聊shell的高级文本处理命令吧!通常我们用到的文本处理命令分为以下八个:
wc-计数,sort-排序,uniq-去重,cut-切割,grep-筛选,sed-流编辑,awk-报表生成器,find-查找
1、wc,word count-统计文件行数,字节,字符数
常用指令有:
wc +文件名,计算文件内容的行数,字符数和字节数
wc -L 统计字符串长度
wc -l 统计文件的行数
wc -c 统计文件的字符数
2、sort--对整列进行排序
sort +文件名 对整个文件的行排序,字典顺序
-t: 以:为分隔符,-nk 取第二个字段排序。组合使用为:sort -nk 2 -t: +文件名
-u:去重
-r:去重
例子: sort -t: -u -nk 2 sort.txt 对sort文件的每一行按:切割,按照数值排序去重。
3、uniq去重,这个比较简单。直接在输出结果中加入| uniq就可以去掉重复的
-c 显示重复的次数
-u -c 一起表示打印不重复行
-d -c一起表示打印重复行
-w 2 表示 以前两个字符为标准
4、cut,切割结果。
例子:cut -d: -f 3,5 切割第三个和第五个字段
5、grep 文本生成器,主要的用途在于过滤。
可以直接接字符,字符串,也可以可以指定某个位置的文件中的行带有指定字符。
如: grep zhigang ./*.txt 显示当前所有txt文件中有zhigang的行。
-c,可以计数,算出行数多少。
-v,表示查询不含指定内容的行
复杂的表达式请使用正则表达式。
6、sed流编辑器,不会改变文件的内容,只是将读取的文件存入缓冲区,然后进行处理输出,不影响文件内容。
sed '3d' sed.txt 删除sed文件的第二行
sed ‘2c hello’ sed.txt 将第二行替换成hello
sed ‘s/hello/hi/g’ sed.txt 将所有的hello替换成hi
sed -n '2,4p' sed.txt 打印sed文件的第二行和第四行
7、awk--报表生成器,直接上一个例子的
cat abc.txt | awk -F: '{print $1 $3}' 打印查询结果中以:分割的第一个和第三个字段
awk 'BEGIN{FS=":";OFS="\t"}{print $1 $3}' /etc/passwd 打印指定目录下,按:分割的第一个和第三个数据,并且替换分隔符为\t
其他使用比较复杂,需要详细的了解。
8、find---查找
find 文件路径 -name “*.txt” 查找指定路径下的文本文件
-iname 忽略大小写
用的比较多的形式是正则表达式指定需要查找的内容
总的来说,shell编程在linux中运用起来非常的方便,很多的复杂操作,脚本编写,都可以通过shell命令轻松的搞定。但是shell语法本身比较出类,用起来不是很方便!
专门做shell编程的可以多研究,否者的话,只要能够看懂即可!