正则表达式
- demo1:在某个文件中寻找命令sed
- demo2:寻找8位电话号码
正则表达式:用来描述或者匹配某一系列符合某个句法队则的字符串或者单个字符串。
最初正则表达式,出现在自动控制理论和形式化语言理论中。
Linux 中 find grep sed ls命令都支持正则表达式,vim, Emacs编辑器,shell编程都支持正则表达。
demo1:在某个文件中寻找命令sed
# grep <字符串> <文件名> > <输出文件名>
grep "sed" ./learn.sh > ./sed_command.txt # 所有包含“sed”的行
grep "\bsed\b" ./learn.sh > ./sed_command.txt # 以"sed"作为单个单词的行
注:> 可以将输出到屏幕上的内容 输出 到文件中(覆盖缘由输出),>> 追加输出
\b被称为元字符,其他元字符列表:
元字符 | 说明 |
---|---|
. | 匹配任意字符 |
\w | 匹配字母数字下划线汉字 |
\s | 匹配任意空白符号 |
\d | 匹配数字 |
\b | 匹配单词的开始\结尾 |
^ | 匹配行首 |
$ | 匹配行尾 |
反义字符 | 说明 |
---|---|
\W | 匹配不是字母数字下划线汉字 |
\S | 匹配任不是空白符号 |
\D | 匹配不是数字 |
\B | 匹配不是单词的开始\结尾 |
[^x] | 匹配不是x的字符 |
[^xyz] | 匹配不是x且不是y且不是z的字符 |
重复字符 | 说明 |
---|---|
* | 重复0次或者更多次 |
+ | 重复1次或者更多次 |
? | 重复0次或者一次 |
{n} | 重复n次 |
{n,} | 重复n次或者更多次 |
{n,m} | 重复n次到m次 |
go*gle–ggle(0次),gogle(1次),google(2次)
demo2:寻找8位电话号码
grep "\D\d\d\d\d\d\d\d\d\d" diary.txt
grep "\D\d{8}\D" diaty.txt # \d 重复8次
grep "\D\d{4}[-\s]\d{4}\D" # []表示或