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