您的位置:首页 > 运维架构 > Shell

关于Shell的实用技巧分享

2017-10-28 16:26 381 查看
学过了不代表你知道了,掌握了不代表你能一直记得,温故而知新。辛辛苦苦学完的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编程的可以多研究,否者的话,只要能够看懂即可!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell linux hadoop