grep,egrep,fgrep
grep:根据模式搜索文本,并将符合模式的文本行显示出来
pattern:文本字符和正则表达的元字符组合而成匹配条件。
grep [options] PATTERN [FILE...]
-i 忽略大小写
--colour
-v:显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
-E:来使用扩展正则表达式
-A:匹配其后面的几行
-B:
-C:
*:任意长度的任意字符
?:任意单个字符
[ ]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集:使用时还要用[]:例如[[:digit:]]
[:digit:] 数字
[:lower:]小写字母
[:upper:]大写字母
[:punct:]标点符号
[:space:]空白字符
[:alpha:]所有字母
[:alnum:]包含所有数字和字母
正则表达式:REGILAR EXPression 默认情况下正则表达式工作在贪婪模式下
元字符:
.:匹配任意单个字符
字符次数:
*:匹配其前面的字符任意次
a,b,ab,aab,acb,adb,amnb
.*:任意长度的任意字符
\?:匹配其前面的字符1次或0次
\{m,n\}:匹配其前面的字符至少m次,之多n次
\{1,\}:至少一次
\{0,3\}:至多三次
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
^$:空白行
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现
\<root\>
分组
\(\)
\(ab\)*
grep 'l..e.*l..e' test3.txt
he love his lover
she like her lover
he like his liker
she love her like
后向引用
\1:第一个左括号以及与之对应的右括号所包含的所有括号
grep '\(l..e\).*\1' test3.txt
grep '\([0-9]\).*\1$' /etc/inittab
正则表达式:
basic regexp 基本
extended regexp 扩展
grep :使用基本正则表达式定义的模式来过滤文本的命令。
-E:来使用扩展正则表达式
扩展正则表达式:
.
[ ]
[^]
次数匹配:
*:
?:
+:匹配其前面的至少一次
{m,n}
位置锚定:
^
$
\<
\>
分组:
():分组
\1,\2,\3,...
或者
|: or
C|cat:C或者cat
分组 grep -E '(C|c)at' test6.txt
至少一个空白字符 grep --color -E '^[[:space:]]+' /etc/grub/grub.conf
grep -e = egrep
\<[1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3]\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>