Shell基础(二):正则表达式

grep
ls /usr/bin | grep zip
cat text.txt | grep hello -ab10
重要参数
-i 匹配忽略大小写
-v 取反,即筛选不匹配
-c 打印匹配的数量
元字符:元字符使用时要用单引号括起来防止参数展开
^ $ . [ ] { } - ? * + ( ) | \
任何字符:.
grep '.zip' /usr/bin //.代表任意字符,占一位,所以'.zip'形成了四位匹配数,并不会匹配到只含zip的文件。
锚点:^(以后边字符开头) $(以前边字符结尾)
grep -h '^zip$' /user/bin
grep -i '^..j.r$' /usr/share/dict/words   在单词表中查找由五个字母构成,第三个字母为j,第五个字母为r的单词。
grep '^$' 匹配空格
中括号表达式:[] 从一个指定的字符集合中匹配一个单个的字符。
grep -h '[bg]zip' test.txt  // 匹配bzip或者gzip
中括号表达式中的两个特殊元字符:^(表否定),..(连字符表示一个区域)
grep -h '[^bg]zip' test.txt // 匹配不是bzip和gzip的至少四位文本,^只在中括号表达式第一位时生效,其他位置会被认为是普通字符。
grep -h '^[A..Z]' test.txt // 匹配以大写字母开头的文本
交替:| 允许从一系列的字符串或者是其它正则表达式中选择匹配项
echo "AAA" grep -e 'AAA|BBB'  匹配AAA或者BBB
grep -eh '^(bz|gz|zip)' text.txt  // 可以用()包含交替然后和其他正则表达式元素结合起来匹配。
限定符
? 匹配零个或者一个元素,使前面的元素可有可无。
匹配'(nnn) nnn-nnnn'或者'nnn nnn-nnnn' 即使()可有可无
echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
* 匹配零个或者多个元素
+ 匹配一个或者多个元素,即至少有一个。
{} 匹配特定个数的元素
限定符 意思
n   匹配前面的元素,如果它确切地出现了 n 次。
n,m  匹配前面的元素,如果它至少出现了 n 次,但是不多于 m次。
n,  匹配前面的元素,如果它出现了 n 次或多于 n 次。
,m  匹配前面的元素,如果它出现的次数不多于 m 次。

'^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
可简化为 '^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值