grep 简单笔记
文本处理工具之grep、egrep和fgrep
grep:(global search regular expression(RE)and print out the line)
文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,并显示匹配的行
格式:grep [options] 'PATTERF' file,默认只支持基本正则表达式,要匹配额外功能的字符用-E
选项:
--color 指定颜色
-v:反向匹配,显示不能被模式匹配到的行
-o:仅匹配被模式匹配到的字串,而非整行
-i:不区分大小写,ignore-case
-E:支持扩展
-A #:还显示模式下面的一行
-B #:还显示模式上面的一行
-C #:前后各显示一行
正则表达式:是一类字符所书写出的模式(pattern)
元字符:类似统配符,不表示字符本身的意义,用于额外功能性的描述
基本正则表达式和扩展正则表达式
基本正则表达式的元字符:
.:任意单个字符
[]:指定范围内的任意单个字符
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
所有的字母:[[:alpha:]]
字母+数字:[[:alnum:]]
空格:[[:space:]]
标点符号:[[:putct:]]
[^]: 指定范围外的任意单个字符
次数匹配:用来指定匹配其前面的字符的次数
*:任意次
例子:x*y xxy xy y 都能匹配
.*:匹配任意长度的任意字符
\?:前面字符出现0次或者1次的
grep --color 'x\{2\}y' b \{m\}:匹配m次
xxy
xxy
grep --color 'x\{2,3\}y' b \{m,n\}:至少m次,至多n次
xxy
xxxy
grep --color 'x\{2,\}y' b \{m,\}:至少m次
xxy
xxxxxxxxxxxxxxxxxxxy
grep --color 'x\{0,2\}y' b \{0,n}:至多n次
xy
xxy
xxy
做变量换算需要使用”“
贪婪模式:尽可能的长的去匹配字符:
位置锚定:用于指定字符出现的位置
^:锚定行首
^Char
$:锚定行尾
grepchar$
^$:空白行
单词的位置锚定
\<char :锚定词首,\b
char\> : 锚定词尾,char\b
分组:
\(\)
\(ab\)*xy \(a.b\)xy\1 = a6bxya6b
栗子:
cat c
He like his lover
She love her liker
He love his lover
She like her liker
grep '\(l..e\).*\1' c
He love his lover
She like her liker
引用:
\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容,意思是说前面出现一次,在\1这也要出现一次