eroshn 2020-01-31
grep正则表达式
因为文本查找的需要
grep egrep fgrep
grep:根据模式,搜素文本,并将符合模式的文本行显示出来
pattern:文本字符和正则表达式元字符组合而成的模式
grep [OPTIONS] PATTERN [FILE...]
例 grep ‘root‘ /etc/passwd
-i, --ignore-case 忽略大小写
--color 用颜色表示查找到的
-v 显示不被模式匹配到的行
-o 只显示被模式匹配到的字符串
-E 使用扩展正则表达式
正则表达式:Regular EXPression,REGEXP
元字符:(意义同globbing不同)
.:匹配任意单个字符
*:匹配前面字符任意次数
.*:匹配任意长度任意字符
\?:匹配其前面字符1次或0次,需用转义符\
\{m,n\}:匹配其前面字符至少m次,至多n次
\{1,\}至少1次
\{0,3\}至多3次
位置锚定:
^:锚定行首,此字符后面任意字符必须出现在行首
$:锚定行尾,此字符前面任意字符必须出现在行尾
^$:表示空白行
[]:匹配指定范围内的任意单个字符,包括字符集合
[^]:匹配指定范围外的任意单个字符
字符集合: [:digit:] [:lower:] [:upper:] [:punct:] [:space :] [:alpha:] [alnum:]
\< 或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\> 或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
分组:
\(\)
\(ab\)*
后项引用
\1:第一个左括号以及与之对应的右括号所包括的所有内容
\2:第二个左括号以及与之对应的右括号所包括的所有内容
\3:第三个左括号以及与之对应的右括号所包括的所有内容
grep ‘\([0-9]\)\1.*‘ num
正则表达式:
grep:基本正则表达式
grep -E :扩展正则表达式
-A # :
-B #:
-C #
grep -A 2 ‘core id‘ /proc/cpuinfo
grep -B 2 ‘core id‘ /proc/cpuinfo
grep -c 2 ‘core id‘ /proc/cpuinfo
默认情况下工作在贪婪模式下
扩展正则表达式
字符匹配
.
[]
[^]
次数匹配
*
?
+:,匹配其前面字符至少1次
grep -E --color ‘^[[:space:]]+‘ /boot/grub/grub.conf
{m,n} 不再使用\
位置锚定:
^
$
\<
\>
分组:
()
\1,\2,\3,...
grep -E --color ‘(C|c)at‘ test.txt
或者
| :or
egrep=grep -E
找出/boot/grub/grub.conf文件中1-255之间的数字,注:锚定的是单词
egrep --color ‘\<[1-9]|[1-9]|1[0-9][0-9]|2[0-4]|25[0-5]\>‘ /boot/grub/grub.conf
egrep --color ‘\<([1-9]|[1-9]|1[0-9][0-9]|2[0-4]|25[0-5])\>‘ /boot/grub/grub.conf
显示所有以数字结尾且文件名中不包含空