拓展正则表达式

1.提示

默认 grep sed不能直接识别

grep 提升自己  -- egrep/grep -E 

sed  提升自己  -- sed -r   主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等

还有就是一种方法把需要用到的拓展正则用撬棍\打回到基本的正则表达式

2.+号符号( 匹配前一个字符连续出现了1次或者多次 )


my qq num is 49000448.

not 4900000448.

egrep "0+" oldboy_test.txt

grep "0\+" oldboy_test.txt

结果: 000

    00000

找出身份证信息输入错误的内容

张三 110105199004067631

李四  104105199004067631

王五  104105199004067631

赵六 oldboy

grep -Ev "[0-9]+" oldboy_test02.txt

赵六 oldboy

3.竖线符号|

用于匹配多个信息

grep -E "oldboy|oldbey" oldboy_test.txt

4. 括号符号() 看作整体

作用1. 指定信息进行整体匹配

grep "oldb[oe]y" oldboy_test.txt

grep -E "oldb(oe)y" oldboy_test.txt

作用2. 进行后项引用前项使用: sed命令替换功能

echo oldboy{01..10}|xargs -n1

    oldboy01

    oldboy02

    oldboy03

    oldboy04

    oldboy05

    oldboy06

    oldboy07

    oldboy08

    oldboy09

    oldboy10

echo oldboy{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1#g' | bash

# \1代表后项引用前项 xargs -n1代表换行显示 -r代表拓展命令

把每一行的内容都放在(.*)中  最后要放到bash解释器中 不然只会输出 不会执行命令

面试题: 批量创建用户 oldboy01..oldboy10,并给每个用户设置密码信息,默认初始化密码(123456)

seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g 

stdin标准输入

将输出的信息

echo 123456 ==> 转换为 <123456>进行显示

echo 123456|sed -r 's#(.*)#<\1>#g'

sed -r 's#([1-6]+)#<\1>#g'

echo 123456 ==> 转换为 <12><34><56>进行显示

[root@oldboyedu ~]# echo 123456|sed -r "s#(12)(34)(56)#<\1><\2><\3>#g"

    <12><34><56>

[root@oldboyedu ~]# echo 123456|sed -r "s#(12)(34)(56)#<\1><><\3>#g"

    <12><><56> 

[root@oldboyedu ~]# echo 123456|sed -r "s#(12)(34)(56)#<\1><\3><\3>#g"

    <12><56><56>

[root@oldboyedu ~]# echo 123456|sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"

    <12><34><56>

5.括号符号{} (可以指定字符连续匹配的次数)

第一种情况: x{n,m} 表示前一个字符至少连续出现n次,最多出现m次

grep -E "0{2,3}" oldboy_test.txt

grep -E "0{2,4}" oldboy_test.txt -o

第二种情况: x{n} 表示前一个字符正好连续出现了n次

grep -E "0{2}" oldboy_test.txt

第三种情况: x{n,} 表示前一个字符至少连续出现n次,最多出现多少次不限

grep -E "0{2,}" oldboy_test.txt

 第四种情况: x{,m} 表示前一个字符至少连续出现0次,最多出现m次

grep -E "0{,2}" oldboy_test.txt


6.  问号符号 ?

  定义匹配前一个字符出现0或者1次

7. 拓展的正则表达式总结

* 匹配前一个字符出现0次或者多次

+  匹配前一个字符出现1次或者多次

{} 匹配前一个字符指定出现多少次,至少0次

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

8.利用ip address show eth0只把IP地址信息显示出来

ip a s eth0|egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" -o|head -1

10.0.0.200


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容