shell学习(正则表达式)

正则表达式

^匹配行首
$匹配行尾
[ ]集合,匹配集合中的任意单个字符
[^ ]取反
.匹配任意单个字符
*匹配前一个字符的任意次数(不能单独使用)
\{n,m\}匹配前一个字符n到m次
\{n\}匹配前一个字符n次
\{n,\}匹配前一个字符n次及以上
\{n,m\}匹配前一个字符n到m次
\(\)保留

扩展正则列表(grep 使用扩展正则方法 grep -E || egrep )

+最少匹配一次
最多匹配一次
{n,m}匹配n到m次
()组合为整体,保留
\b单词边界(边界:空,空格,tab,特殊符号)
|或者
创建测试文本
[root@ha131 opt]# head -2 /etc/passwd > zhengze.txt
[root@ha131 opt]# cat zhengze.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@ha131 opt]# egrep "bin:/{2}" zhengze.txt 
[root@ha131 opt]# egrep "(bin:/){2}" zhengze.txt 
bin:x:1:1:bin:/bin:/sbin/nologin
[root@ha131 opt]# grep ^root zhengze.txt     #^匹配行首
root:x:0:0:root:/root:/bin/bash
[root@ha131 opt]# grep root zhengze.txt 
root:x:0:0:root:/root:/bin/bash
[root@ha131 opt]# grep bash$ zhengze.txt    # $匹配行尾
root:x:0:0:root:/root:/bin/bash
[root@ha131 opt]# grep ^$ zhengze.txt      #^$连用匹配空行

grep 使用方法
grep -v 取反
   -i 不区分大小写
   -n 显示行号
grep bas[ht] zhengze.txt #查找有bash或者bast的行
grep [rot] zhengze.txt #查找带有r || o || t的行
grep [^ rot] zhengze.txt #查找不带 开头rot的行
grep [a-z] zhengze.txt #查找所有带小写字母的行
grep [A-Z] zhengze.txt #查找所有带大写字母的行
grep [^A-Z] zhengze.txt #查找所有不带大写字母的行
grep [^a-Z] zhengze.txt #查找所有不带字母的行
grep [0-9] /etc/shadow # 查找所有带数字的行
grep “. **” zhengze.txt # . * == shell中的 *
查找一般使用" "框起来,保证命令的正确执行
grep “roo.” zhengze.txt #找roo开头后面追加一个任意字符的行
grep “ro…” zhengze.txt #找ro开头后面追加3个任意字符的行
grep “.oot” zhengze.txt #找某字符开头后面是oot结尾的行
grep “root" zhengze.txt #找root,第一个o可以出现0次
grep "ro
t” zhengze.txt #找 rot ,第一个o可以出现任意次
grep “boi" zhengze.txt #找 boi ,o可以出现任意次
grep ".
” zhengze.txt #找任意

grep “ro+t” zhengze.txt #grep不支持扩展正则
grep -E “ro+t” zhengze.txt #增加-E选项后支持
egrep “ro+t” zhengze.txt #或者egrep
grep “ro?t” zhengze.txt #找rot,第一个o可以出现1次或者0次
grep “ro?ot” zhengze.txt #找root ,第一个o可以出现1次或者0次
grep “ro\{0,1\}ot” zhengze.txt #使用基本正则实现相同结果
egrep “ro{0,1}ot” zhengze.txt #使用扩展正则实现

egrep “r|o|t” zhengze.txt #找r或者o或者t
egrep “bash|nologin” zhengze.txt #找bash或者nologin
grep “\.$” test #找结尾为.的行

[root@ha131 opt]# grep “o{2,5}” zhengze.txt #匹配前一个字符2到5次
root: x:0:0:root:/root:/bin/bash
[root@ha131 opt]# grep “ro{1}t” zhengze.txt
[root@ha131 opt]# grep “ro{2}t” zhengze.txt #匹配前一个字符2次
root: x:0:0:root:/root:/bin/bash
[root@ha131 opt]# grep “ro{3}t” zhengze.txt
[root@ha131 opt]# grep “ro{2,}t” zhengze.txt
root: x:0:0:root:/root:/bin/bash
[root@ha131 opt]# egrep “ro+t” zhengze.txt
root: x:0:0:root:/root:/bin/bash
[root@ha131 opt]# grep -E “ro+t” zhengze.txt
root: x:0:0:root:/root:/bin/bash
[root@ha131 opt]# egrep “\bbin\b” zhengze.txt #\b单词边界 \b选项\b
root: x:0:0:root:/root:/bin/bash
bin x:1:1:bin:/bin:/sbin/nologin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值