grep 及正则表达式
文本查找的需要,
grep, egrep, fgrep
grep:根据模式,去搜索文本,并将符合模式的文本行显示到屏幕
Pattern: 文本字符和正则表达式的元字符组合而成的匹配条件
grep [OPTIONS] PATTERN [FILE...]
#grep --color 'root' /etc/passwd
-i: 忽略字符大小写
--color[=num]:
# alias grep='grep --color'
-v: 显示没有被模式匹配的行
-o: 只显示被模式显示的串
正则表达式:Regular Expression,REGEXP
元字符:
. :匹配单个任意字符 #grep --color 'r..t' /etc/passwd
[] :匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
匹配次数(贪婪模式):
* :匹配其前面的字符任意次
a, b, ab, aab, acb, adb, amnb
a*b : b, ab, aab可以匹配
.* : 任意长度任意字符
a.*b :a开头,b结束
\? : 匹配其前面字符0次或1次(部分匹配)
#grep 'a\?b' test.txt nmbmnbmnb符合
\{m,n\} :匹配其前面字符至少m次,至多n次
\{1,\} :至少1次
\{1,3\} :至少1次,至多3次
#grep 'a\{1,3\}b' test.txt
#grep 'a.\{1,3\}b' test.txt anmbnmbmnb符合
位置锚定:
^ :锚定行首,次字符后面的任意内容必须出现行首
#grep '^r..t' /etc/passwd
$ :锚定行尾,次字符后面的任意内容必须出现行尾
#grep 'w$' /etc/passwd
#grep 'b..h$' /etc/paawd
^$ :空白行
#grep '^$' /etc/inittab | wc -l 统计空白行
#grep '[[:digit:]]$' /etc/inittab 以一个数字结尾的字符
\< 或\b :锚定词首,其后面的任意字符必须作为单词首部出现
\> 或\b :锚定词尾,其前面的任意字符必须作为单词首部出现
\<root\> 精确匹配单词root
分组:
\(\)
\(ab\)* : ab 可以出现任意次
\1 :引用第1个左括号以及与之引用的内容
\2 :引用第2个左括号以及与之引用的
\3 :引用第3个左括号以及与之引用的
$ grep '\(l..e\).*\1' test1.txt //she like anna liker.