(1)文本查找 寻找含有特定文本的行
grep 基本正则表达式(Basic Regular Expression,BRE)
grep -E 相当于 egrep
grep -F 相当于 fgrep
-i 忽略大小写
-l 列出匹配模式的文件名称,而非打印匹配的行
-q 匹配成功会离开且不将匹配的行写入标准输出,否则即是不成功
-s 显示错误信息 通常与q并用
-v显示不匹配的行
-n 显示匹配项的行号
-An 显示匹配项及匹配项的后n行
-Bn 显示匹配项及匹配项的前n行
-Cn
--color 把匹配的字符高亮显示
egrep 扩展正则表达式(Extended Regular Expression,ERE)这是一套功能更强大的正则表达式,但是会消耗大量的运算资源.
fgrep 快速grep 此版本匹配固定字符串而非正则表达式,使用优化的算法,能匹配多个字符串
(2)元字符是这样一类字符,它们所表达的是不同字面本身的含义
正则表达式元字符
元字符 功能 示例 匹配对象
^ 行首定位符 /^tom/ 匹配所有以tom开头的行
$ 行尾定位符 /tom$/ 匹配所有以tom结尾的行
. 匹配单个字符 /t.m/ 匹配包含一个t,后跟一个字符,再跟一个m的行
* 匹配0个或多个重复的位于星号前面的字符 /*tom/ 匹配包含跟在零个或多个空格后的模式tom的行
[] 匹配一组字符中的任一个 /[tT]om/ 匹配包含tom或Tom的行
[x-y] 匹配指定范围内的一个字符 /[A-Z]om/匹配后面跟着om的一个A至Z之间的字符
[^] 匹配不在指定组内的字符 /[^A-Z]/ 匹配不在范围A至Z之间的任意一个字符
\ 用来转义元字符 /tom\*/ 匹配包含tom后面跟一个*的字符
\< 词首定位符 /\<tom/ 匹配包含以tom开头的词的行
\> 词尾定位符 /tom\>/ 匹配包含以tom结尾的词的行
\(..\) 匹配稍后将要使用的字符的标签 /\(tom\)
x\{m\}或x\{m,\}或x\{m.n\} o\{5,10\}
posix方括号字符集
grep支持的元字符
egrep支持的元字符
练习:
1、显示/proc/meminfo文件中以不区分大小的s开头的行;
grep --color "^[sS]" /proc/meminfo
2、显示/etc/passwd中以nologin结尾的行;
grep --color "nologincontentquot; /etc/passwd
3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意字符的行;
grep --color "^#[[:space:]]\{1,\}.*" /etc/inittab
4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep --color ":[0-9]:" /etc/inittab
5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep --color "^[[:space:]]\{1,\}.*" /boot/grub/grub.conf
6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep --color "^\([0-9]\).*\1contentquot; /etc/inittab
7、ifconfig命令可以显示当前主机的IP地址相关的信息等,如果使用grep等文本处理命令取出本机的各IP地址,要求不包括127.0.0.1;
ifconfig |grep --color "inet addr" |grep -v ''127.0.0.1''|cut -d: -f2 |cut -d" " -f1
或ifconfig | grep --color "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" |grep --color -v "127\.0\.0\.1"
8、显示/etc/sysconfig/network-scripts/ifcfg-eth0文件中的包含了类似IP地址点分十进制数字格式的行;
grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" /etc/sysconfig/network-scripts/ifcfg-eth0
或 egrep "([0-9]{1,3}\.){3}([0-9]{1,3})" /etc/sysconfig/network-scripts/ifcfg-eth0
|