2019.4.17正则表达式

1.

[root@huahua ~]# vim /etc/ssh/sshd_config



[root@huahua ~]# systemctl restart sshd

2.通配符和正则的区别

 作用支持命令

通配符方便我们找文件Linux大部分命令都可用

正则方便我们过滤文件(在文件中找内容)Linux三剑客  开发语言Phython Go PHP JAVA

3.正则表达式(Regular Expression  RE)

    发明1套符号,不同符号有不同含义,方便我们再文件中查找/过滤内容

(1)基础正则(Basic RE    BRE)

^    :以什么开头

$    :以什么结尾

^$   :查找空行(这一行什么都没有)

.*   :所有任意字符

.    :任意一个字符

* :匹配前一个字符    只能放字符后面,不允许放前面 前一个字符连续出现0次或0次以上

[]   :匹配里面任意一个字符(综括号)

[^]  :不要里面的任意字符

\    :转义字符

 [root@huahua ~]# cat /etc/ssh/sshd_config > /tmp/test.txt    //把/etc/ssh/sshd_config的内容放在/tmp/test.txt里面

[root@huahua ~]# grep '^#' /tmp/test.txt    //筛选出/tmp/test.txt下以#开头的文件


[root@huahua ~]# grep 'no$' /tmp/test.txt    //筛选出/tmp/test.txt下以$结尾的文件


[root@huahua ~]# grep -n '^$' /tmp/test.txt    //筛选/tmp/test.txt下的空格   -n显示行号


[root@huahua ~]# grep 'n*' /tmp/test.txt    //匹配带n的字符


[root@huahua ~]# grep -nv "^$" oldboy.txt    //-v排除空行  -n显示行号


[root@huahua ~]# grep " " oldboy.txt    //过滤出空格  (空格看不出来,拉黑就看到红色的空格)


[root@huahua ~]# grep -o "......" oldboy.txt    //一次查看六个字符   (6个.代表一次查看6个字符 -o是显示过程)


①撬棍系列

加撬棍,是转移字符,作用,脱掉马甲,打回原型

\n    回车(换行)

\t    tab(空格)

[root@huahua ~]# grep ".$" oldboy.txt    //以任意字符为结尾

[root@huahua ~]# grep "\.$" oldboy.txt    //查看oldboy.txt中以.为结尾


②echo

-n    不输出每行结尾的回车

-e    让echo支持转义符 \n \t

[root@huahua ~]# echo -e "\nhuahua\txixi\zhizhi"    //可以看到huahua换行了,huahua和xixi之间有空格



追加123之后查看,可以看到有4个字符,加上-n追加可以看到有3个字符

[root@huahua ~]# grep "0*" oldboy.txt    //连续(重复)出现的0


[root@huahua ~]# grep '[a-z]' /tmp/test.txt    //匹配字母a-z的


[root@huahua ~]# grep " [a-zA-Z] " oldboy.txt    //匹配a-z A-Z

[root@huahua ~]# grep " [0-Z] " oldboy.txt    //匹配0-9 a-z A-Z

[root@huahua ~]# grep " [a-Z] " oldboy.txt    //匹配a-z A-Z

[root@huahua ~]# grep "[0-9]" /tmp/test.txt    //匹配带数字的


[root@huahua ~]# grep '^[mno]' oldboy.txt    //显示以m或n或o开头的行

[root@huahua ~]# grep '[mn.]$' oldboy.txt    //以m或n或点结尾的行

[root@huahua ~]# grep '^[mno].* [mn.]$' oldboy.txt    //显示以m或n或o开头的并且以m或n或点结尾的行

[root@huahua ~]# grep "[^abc]" oldboy.txt    //不要abc

(2)扩展正则(Extended RE  ERE)

|     或者

+     匹配前一个字符出现一次和一次以上(>=1)

()    后向引用

{}    前一个字符出现最少n次,最多m次

b{m,n} 前1字符连续出现至少m次和最多n次

b{m}前一个字符连续出现m次

b{m,}前1个字符连续至少出现m次

b{,n}前一个字符最多出现n次

?   前一个字符出现0次或1次

[root@huahua ~]# egrep '[a-Z]+' oldboy.txt    //匹配a-Z出现1次或1次以上


[root@huahua ~]# egrep 'oldboy|linux' oldboy.txt    //查找'oldboy或linux


[root@huahua ~]# egrep 'oldb[oe]y ' oldboy.txt    //查找oldboy或者oldbey

[root@huahua ~]# egrep 'oldb(o|e)y ' oldboy.txt    //查找oldboy或者oldbey


[root@huahua ~]# egrep  '0{1,3}' oldboy.txt    //查找0至少出现1次,最多出现3次


出现的5个0是因为grep具有贪婪性

[root@huahua ~]# egrep  '0{2,4}' oldboy.txt


[root@huahua ~]# egrep  '0{3}' oldboy.txt


[root@huahua ~]# egrep '[0-9]{17}[0-9X]$' id.txt    //查找身份证号


[root@huahua ~]# egrep 'go?d' oldboy.txt    //查找god或者go (oldboy.txt内必须有god和go)


4.括号表达式

[[:alnum]]:大小写字母或数字(也就是0-9)

[root@huahua ~]# egrep [[:alnum:]] oldboy.txt    

5.man grep    info grep    //info比慢更详细

6. Cat -A    文件中所有隐藏符号,每行结尾加上$

[root@huahua ~]# cat -A oldboy.txt

 

7.

 基础正则扩展正则

 grep   sed   awkegrep   sed -r   awk

你可能感兴趣的:(2019.4.17正则表达式)