标签:linux grep
一、grep是什么。
grep:Global search regular expression and print out the line.
grep是一种文本搜索处理工具,根据用户指定的文本模式或搜索条件对目标文件进行逐行搜索,并显示能匹配到的行。
语法格式:grep [options]... ‘PATTERN‘ FILE...
正则表达式:是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能
基本正则表达式:grep
扩展正则表达式:egrep,grep -E
不支持使用正则表达式:fgrep,即用户搜索条件或文本模式表示其字面意义
1、字符匹配
.:匹配任意单个字符 *:任意长度,它前面的字符可以出现任意次 .*:任意长度的任意字符 a|b:多条件匹配,a或者b []:匹配指定范围内的任意单个字符 [0-9],[[:digit:]] #表示任意数字 [a-z],[[:lower:]] #表示任意小写字母 [A-Z],[[:upper:]] #表示任意大写字母 [[:space:]] #表示空格 [[:punct:]] #表示特殊符号 [[:alpha:]] #表示任意字母 [[:alnum:]] #表示任意字母和数字 [[:blank:]] #匹配一个空格或制表符(TAB) [^] #条件取反
2、次数匹配元字符
#"\"符号为转义符,为方便理解,标注转义前后 \?:0次或1次,它前面的字符是可有可无的 \{m\}:精确匹配m次,它前面的字符要出现m次 #转义前{m} \{m,n\}:至少m次,至多n次 #转义前{m,n} \{m,\}:至少m次 #转义前{m,} +:至少1次 \{0,n\}:至多n次 #转义前{0,n}
3、位置锚定
^:行首锚定,写在模式最左侧 $:行尾锚定,写在模式最右侧 ^$:空白行 \<:词首,写在字符左侧 \>:词尾,写在字符右侧 \<char\>:锚定字符串 \b:字符串锚定,不区分词首词尾
4、分组和引用
\(\):分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用 例如:\(ab\).*\1,即引用前一个括号匹配到的内容 格式:\(char\).*\#,\#表示引用前面第#个括号匹配的内容
5、命令选项
-v:反向选取 -o:仅显示匹配的字串,而非字串所在的行 -i:igonore-case,忽略字符大小写 -E:支持使用扩展正则表达式 --color:匹配字串显示颜色,颜色可指定 -n:显示匹配行的位置,在第几行 -A #:显示上下文,#表示数字,显示下面#行 -B #:显示上面#行 -C #:显示上下#行
6、例子
1)找出/etc/passwd文件中的一位数或两位数; # grep "\<[0-9][0-9]\?\>" /etc/passwd # grep "\<[0-9]\{1,2\}\>" /etc/passwd 2)显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf 3)找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“()”行; # grep -o -E "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions
标签:linux grep
原文地址:http://liangshaoqin.blog.51cto.com/2137205/1626743