1.grep命令简介
grep命令是Linux系统中非常强大的文本搜索工具,全名Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户.根据某种模式(Pattern)搜索文本,并将符合模式的文本行显示出来.其中模式:由文本字符和正则表达式的元字符组合而成的匹配条件.
2.命令格式
grep [options] PATTERN [FILE...]
options选项:
-i 忽略模式的大小写
--color 用颜色标记
-v 反向查找
-o 只显示被模式匹配到的字符串
-c 只输出匹配行的计数
-n 显示匹配行及行号
-v 显示不包含匹配文本的所有行
PATTERN字段:
正则表达式:
- 匹配任意单个字符 "." grep 'r..t' /etc/passwd
- 匹配前一个字符任意次 "*"
- 匹配任意长度的任意字符".*" grep 'a.*b' /333/testre
- 匹配前一个字符1次或者0次 “?" grep 'a?b' /333/testre
- 匹配前面字符至少n,至多m "{n,m}" grep 'a{1,3}b' /333/testre
- 位置定义为行首"^", grep '^r..t' /etc/passwd
- 位置定义为行尾"$", grep 'w$' /etc/initab
- 空白行 "^$" , grep '^$' /etc/fstab | wc -l
- 匹配指定范围内的单个字符 ”[]"
- 匹配指定范围外的单个字符 "[^]"
- [[:digit:]] [[:lower:]] [[:upper:]] [[:space:]] [:alpha:]] [[:alnum:]]
例如:匹配以空白字符+数字结尾的行? grep '[[:space:]]*[[:digit:]]$' /etc/initab
- 后边的任意字符作为单词首部出现 "<"
- 前边的任意字符作为单词首部出现 ">"
- 分组内容 "()" grep "(ab)*" /333/testre
基本正则表达式:
- 字符匹配: "." "[]" "[^]"
- 次数匹配: "*" "?" "{m,n}" ".*"
- 位置匹配: "^" "$" "<" ">" "" "() 1 2 3"
扩展正则表达式:
grep -E / egrep
次数匹配“*” “?” “+”其前字符至少一次 grep -E '^[[:space:]]+' /boot/grup/group.conf '
"|" 或者 grep -E 'c|cat' /333/testre
例子:找出/etc/networks中所有的1-255的整数
grep -E --color '<([1-9] | [1-9][0-9] | 1[0-9][[0-9] | 2[0-4][0-9] | 25[0-5]' /etc/networks