Linux 之正则表达式
抱怨只是无能的表现,无它。 ——马哥,永远都是正能量
正则表达式:
理解:由元字符及正常字符拼凑的一中模式,根据目标字符或字符串的某些特征总结出来的对应的“公式”
作用:可用于文件查找,模式匹配等等
字符匹配:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符的
次数匹配:
*:其左侧的字符出现任意次
.*:任意长度任意字符
\?:其左侧的字符出现0次或1此
\+:其左侧的字符出现1次或多次
\{m\}:精确匹配其左侧的字符出现m此
\{m,n\}:匹配其左侧字符至少出现m次,至多出现n次
位置锚定:
^:锚定行首
$:锚定行尾
\<:锚定词首
\>:锚定词尾
^$:匹配空白行,包括行中只有空格和制表符的行!!!
\(\):分组。这个感觉比较高大尚。分组模式中,在某次匹配过程中所匹配到的字符,被grep暂时记忆(保存到内置变量\1,\2,...中),故而
\1:引用自左向右的第一个括号以及与之对应的又括号中的内容
练习如下:
找出/proc/meminfo文件中以大写S或小写s开头的行:
grep --color=auto "[^sS]" /proc/meminfo
显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户及默认shell
grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1,7
显示/etc/passwd文件中的一位数或两位数(不包括三位及三围以上数字)
grep "\<[0-9]\{1,2\}\>" /etc/passwd
显示/boot/grub/grub.conf文件中至少以一个空白字符开头且后跟i字符的行
grep "^[[:space:]]\+i" /boot/grub/grub.conf
找出系统上其用户名和默认shell相同的用户的信息
grep "^\([[:alnum:]]\>\).*\1$" /etc/passwd
d
本文出自 “运维狗” 博客,请务必保留此出处http://yunweigou.blog.51cto.com/6299641/1627427
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。