标签:大小写 字符串 etc int passwd expr boot 条件 其它
一、正则表达式正则表达式 Regular Expression ,简称REGEXP,用来检索、替换某些符合某个模式的文本。
正则表达式元字符有:
. :匹配任意单个字符
[] :匹配指定范围内的单个字符
[^] :匹配指定范围外的 单个字符
字符集和有(可以使用man grep查看):[:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], [:xdigit:]
匹配次数(贪婪模式匹配尽可能多的)
* :匹配前面的字符任意次数
\? :匹配前面的字符一次或0次
\{m,n\} :匹配前面的字符至少m次,最多n次
列如有字符:a,b,ab,abb,aab,axb,amnb,那么a*b,a?b,a.*b会匹配到的字符串有:
a*b(表示a可以出现任意次可以没有,后面接字符b) :b, ab,abb,aab,axb,amnb
a\?b(表示a可以出现一次或0次,后面接字符b,问号要转义) :b,ab,abb,aab,axb,amnb
a.*b(表示ab之间可以有任意字符):ab,abb,aab,axb,amnb
a\{1,3\}b(表示a最少出现1次,最多出现3次):ab,abb,aab
(以上使用grep测试得出)
位置锚定,即匹配指定位置出现的字符串
^ :锚定行首,后面出现的字符串只能在行首出现
$:锚定行尾,后面出现的字符串只能在行尾出现
^$:匹配空白行
\<或\b :其后面出现的字符必须作为单词的首部出现
\>或\b :其后面出现的字符必须作为单词的尾部出现
分组:
\(\):一般和\1,\2,\3一起使用
grep:根据模式搜索,并将模式的文本行显示出来
用法:grep [OPTIONS] PATTERN [FILE...]
PATTERN:是文本字符和元字符组合而成的匹配条件
常用参数:
-i :忽略大小写
-o :仅显示匹配到的字符串
-v:取反,显示匹配到的以外的字符串
--color:将匹配到的字符串显示颜色
例如:
新建grep.txt文本,内容如下:
she like his liker.
he love she also love.
he like his lover.
1.列出符合 l..e 的行(l和e之间占任意两个字符)
2.只显示匹配到的字符串 -o
3.忽略大小写匹配 -i
4.取反 -v
5.显示/proc/meminfo文件中以不区分大小的s开头的行;
grep -i ‘^s‘ /proc/meminfo
grep ‘^[sS]‘ /proc/meminfo
6.显示/etc/passwd中以nologin结尾的行;
grep ‘nologin$‘ /etc/passwd
7.取出默认shell为/sbin/nologin的用户列表
grep "nologin$‘ /etc/passwd | cut -d: -f1
8.取出默认shell为bash,且其用户ID号最小的用户的用户名
grep ‘bash$‘ /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
9.显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
10.显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep ‘:[0-9]:‘ /etc/inittab
11.显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep ‘^[[:space:]]\{1,\}‘ /boot/grub/grub.conf
12.显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep ‘^\([0-9]\).*\1$‘ /etc/inittab
13.找出/proc/cpuinfo文件中的,1位数,或2位数;
grep ‘[0-9]\{1,2\}‘ /proc/cpuinfo (找出满足有一位或两位数字的行)
grep --color ‘\<[0-9]\{1,2\}\>‘ /proc/cpuinfo (找出满足有一位或两位数字的行,且这数字只能是一个单词)
14.查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd
grep ‘^student\>‘ /etc/passwd
或者 id student
正则表达式用法很灵活,较复杂,更多的用法上百度查找。
正则表达式和通配符的区别,不要搞混淆了,想了解通配符查看“bash及其特性“文档。
标签:大小写 字符串 etc int passwd expr boot 条件 其它
原文地址:http://blog.51cto.com/13803030/2134242