正则表达式
- 通配符
.,空行不能跳过 - 小数点
.转义\. \w找到0-9数字和a-z或者A-Z字母和_下划线\W是\w的补集,其他的符号都能找到\d匹配所有数字,同理\D匹配所有不是数字的(补集)\s匹配所有的空白字符:(空格,制表符,换行符),\S补集[a-z][abc]匹配所有出现在[]中的任意一个字符,重复匹配
1.
+前面的字符(或范围)重复一次或者多次例如
[]代表一个字符,只是这个字符有范围.[yY]+[oO]+代表yY可以出现多次,且后面跟着oO也可以出现多次
*前面的字符(或范围)可以出现零次或者多次例如
[yY][oO]+[!~+-\.]*,代表这些标点可以不出现,也可以出现多次
3.
?前面出现的字符匹配0个或者1个,理解为?前面的字符是否可能出现
{num1,num2}代表前面的字符(或者范围)重复的次数,{num3}指定重复的次数{num4,}表示字符至少重复num4次\b表示匹配单词的起始或者结尾处所找到的空字符串,
粗略的理解为要以空白字符结尾,
如yo{1,4}\b,搜索到o出现1-4且换行的字符串?+*等可以是{}的快捷方式
提取某段字符串作为参数(分组功能)
(.+)字符串\n(.+)字符串,括号里面的就是提取出来的参数,按顺序编号
在使用中就是$1 $2 $...
文本:dingniispig,nidingisdog
搜索:(.+)ispig,(.+)isdog
使用:$1is $2is^表示匹配输入字符串的开始位置,$表示匹配输入字符串的结尾位置
例如:^[0-9a-z-_]{3,15}$:用户注册名
- POSIX 方括号表达式(字符集)
构造:
11.1. POSIX字符集:[:alpha:] 字母字符[:alnum:]数字字符[:lower:]小写字符等等
11.2. 排序符号:将字符序列视为一个单位[.ch.]:匹配于ch
11.3. 等价字符集:[=e=]
三种构造必须用方括号表达式
ls -l /usr/bin | egrep '[[:alpha:]]{1,4}'文件名是基本字母且长度在1-4的文件ls -l /usr/bin | egrep '[zZ]...$'
- 在方括号表达式中,
^放在字首表示的是取反(complement)的意思ls -l /usr/bin | egrep 'a[^aeiou]t'即:at中间不出现元音字母
- 向后引用(Basic RE,ERE中不存在)
匹配于正则表达式匹配的先前的部分
先将子表达式包围再 \( 与 \)中,
下一步使用\digital匹配于第n个先前括号内子表达式匹配成功的字符
more test.vi | grep '\(ab\)\(cd\)[def]*\2\1'检测文件内容是否匹配成功 abcdfffcdab
more tets.vclaei | grep \(def\)\1若出现defdef则匹配成功
vim
单表达式匹配多字符
more test.vi | egrep '[[:upper:]][[:lower:]]'先匹配一个大写字母,然后匹配一个小写字母more test.vi | egrep '[[:upper:]]+[[:lower:]]*'大小写后面接任意重复大小写在
grep (BRE)中,锚点(anchor),^是匹配字符串的开始处,$是匹配字符串的结尾处,常用^$来匹配空的字符串或者行列gcc -E a.c | grep -v '^$' > a.out把空行匹配出来然后显示出它之外的,(=删除文本空行)
通配符(匹配文件名)的一些使用:
rm -rf *删除该目录下所有文件(别瞎用)- 在目录下查询文件等
ls -l [0-2]*ls -l ?abc
Bash中一些特殊符号
''单引号会使得特殊符号失去含义“”大部分特殊符号失去含义,但$\$time$调用变量echo "$time"\,转义字符.$(date)引用命令.echo "$(date)"仍有意义\#shell中的注释$引用变量的值\转义字符$()引用系统命令time=$(date),赋值给变量,echo $time打印结果.
ERE
- 交替:
|和管道字符一样,表示将两者隔开,more input | egrep 'abcd|efgh|a|b'
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!