基础正则表达式学习笔记

正则表达式:是一类字符所书写出的模式(pattern)
元字符:不表示字符本身的意义,用于额外功能性的描述。分为基本正则表达式和扩展正则表达式

基本正则表达式的元字符:
字符匹配:
.:任意单个字符
[ ]:指定范围内的任意单个字符
[0-9],[[:digit:]] 数字
[a-z],[[:lower:]] 小写字母
[A-Z],[[:upper:]] 大写字母
[[:alpha:]] 大小写字母
[[:alnum:]] 数字和字母
[[:space:]] 空白字符
[[:punct:]] 标点符号
[^]:指定范围外的任意字符
次数匹配:用来指定匹配其前面的字符的次数
:任意次
.
:匹配任意长度的任意字符
\?:0次或1次
{m}:匹配m次
{m,n}:匹配最少m次,最多n次
{m,}:至少m次
{0,n\:至多n次
eg:1.匹配passwd文件中以大写R或者小写r开头、中间跟着任意两个字符、T或者t结尾的行
grep --color=auto [Rr]..[Tt]>\ /etc/passwd

2.匹配passwd文件中以大写R或者小写r开头、中间跟着任意长度字符、T或者t结尾的行
grep --color=auto [Rr].*[Tt] /etc/passwd

3.接着题2,中间又不能存在标点字符的行
grep --color=auto [Rr][^[:punct:]]*[Tt] /etc/passwd

位置瞄定:用于指定字符出现的位置
^:瞄定行首 (grep --color=auto ^[Rr][^[:punct:]][Tt] /etc/passwd 大写或者小写R为行开头的行
$:瞄定行尾 (匹配以bash结尾的行 grep 'bash$' /etc/passwd
^$:空白行
单词的位置锚定
\<char :锚定词首,\b
char\> : 锚定词尾,char\b
分组:
()
(ab)
xy 匹配ab出现的次数
abxy 匹配b出现的次数
引用:
\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容,意思是说前面出现一次,在\1这也要出现一次
eg: 4. 匹配用户名和默认bash一样的行
grep "^([[:alnum:]]{1,})\>.
\1$" /etc/passwd ( \1去引用([[:alnum:]]{1,})匹配到的内容. ^([[:alnum:]]{1,})意思是字母和数字开头至少有一位的内容

练习:
1、显示/proc/meminfo文件中的以大小写s的开头的行
grep -i "^s" /proc/meminfo
2、取出默认shell为非bash的用户
grep -v "bash$" /etc/passwd |cut -d: -f1
3、取出默认shell为bash的且其ID号最大的用户
grep "bash$" /etc/passwd |cut -d: -f1|sort -n -t: -k3|tail -1
4、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行
grep "^#[[:space:]]{1,}[^[:space:]]{1,}" /etc/rc.d/rc.sysinit
5、显示/boot/grub/grub.conf中以至少一个空白字符的行
grep "^[[:space:]]{1,}" /boot/grub/grub.conf
6、查出/etc/passwd中一位数或两位数
grep --color=auto "\<[0-9]{1,2}\>" /etc/passwd

转载于:https://blog.51cto.com/eeely/2072377

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值