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

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

2015-04-11 12:34 711 查看
一、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”三个字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息