linux学习笔记-第十二课-Shell脚本之正则表达式(一)

一、grep,egrep,fgrep

       1)grep

       格式:grep [选项] [模式] [文件名]

       常用选项:-n:显示行号和匹配的行

                        -v:反向匹配

                        -c:不显示匹配的行,只显示匹配的行数

                        -i:忽略大小写

                        -r:递归搜索

                        -E:支持扩展正则表达式

                        -P:支持Perl正则表达式

                        -F:不支持正则表达式,将模式按字面意义匹配

        示例:

      

grep示例
说明
grep ‘\<Tom>\‘ file
显示包含单词Tom的行
grep ‘Tom Jerry‘ file
显示包含‘Tom Jerry’的行
grep ‘^Tommy‘ file
显示以Tommy字符串开始的行
grep ‘\.bak$‘ file
显示行的末尾以.bak结束的行
grep ‘[Pp]hoto‘ *
显示当前工作目录的所有文件名中包含photo或Photo的文件名
grep ‘[A-Z]‘ file
显示至少包含1个大写字母的行
grep ‘[0-9]‘ file
显示至少包含1个数字的行
grep ‘[A-Z]...[0-9]‘ file
显示以大写字母开始、以数字结束的5个字符串模式的行
grep -w ‘[tT]est‘ file
显示包含但是Test和test的行
grep -s ‘TY Kim‘ file搜索包含‘TY Kim‘的行,但是不显示在屏幕
grep -v ‘Jerry‘ file显示不包含‘Jerry‘的所有行
grep -i ‘sam‘ file忽略大小写字母,显示所有包含sam的行
grep -l ‘Dear Boss‘ *显示包含‘Dear Boss‘的所有文件目录
grep -n ‘Tom‘ file显示包含Tom的行,同时显示行号
grep "$name" file显示所有拥有name变量值的行。使用变量时必须使用双引号(" ")
grep ‘$5‘ file
显示包含‘$5‘字符的行。单引号内的$字符被识别为其本身
ps aux | grep ‘^*multi‘
将ps的显示结果通过管道符和grep连接,显示行首有空格并包含multi的所有行


       2)egrep

       egrep是grep的扩展,可以使用其他的通配符

       +:有1个以上的字符

       ?:有0个或1个字符

        a|b:匹配a或b的字符

        ():字符组


       3)fgrep

        类似于grep,将特殊字符及$字符识别为其本身


二、sed

       非交互式文本文件编辑器

       常用选项:

       -n:取消默认输出

       -e:允许执行多个脚本

       -i:直接修改原始文件

       -r:使用扩展正则表达式

       示例:

sed示例
含义
8d
删除输入的第8行
/^$/d
删除所有空行
1,/^$/d
从第一行起 删除直到 发现空行
/Jones/p
只显示包含“Jones”的行(使用-n选项)
s/Windows/Linux/
在输入的各行用“Linux”替换第一次出现的“Windows”
s/Windows/Linux/g在输入的各行用“Linux”替换每次出现的“Windows”
s/*$//
删除所有行尾出现的空格
s/00*/0/g
以0替换所有连续出现的0
/GUI/d
删除包含“GUI”的所有行
s/GUI//g
在输入的各行删除“GUI”三个字符

       



本文出自 “MyLinux” 博客,请务必保留此出处http://mylinuxlife.blog.51cto.com/4706737/1631181

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。