这篇文章将为大家详细讲解有关Linux如何使用正则表达式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
我们可以使用 grep 命令来测试我们的正则表达式,grep命令使用正则表达式去尝试匹配指定文件的每一行,并将至少有一处匹配表达式的所有行显示出来。
grep 命令说明:
常用的选项OPTION:
-c 显示匹配到的行数之和 -o 仅显示匹配本身 -v 显示非匹配,取反 -i 不区分大小写 -E 支持扩展表达式 -q 静默模式 -n 显示匹配到的行的行号 -A 2 显示匹配到的行的后2行 -B 2 显示匹配到的行的前2行 -C 2 显示匹配到的行的前后2行 -V 显示版本信息
grep “[匹配字符]匹配出现次数” /PATH/TO/SOMEFILE
字符匹配:
. 任意单个字符 [] 指定范围内的单个字符 [^] 指定范围外的的单个字符,取反 .* 任意长度的任意字符 [:alnum:] 所有的字母和数字 [:alpha:] 所有的字母 [:blank:] 所有呈水平排列的空白字符 [:cntrl:] 所有的控制字符 [:digit:] 所有的数字 [:graph:] 所有的可打印字符,不包括空格 [:lower:] 所有的小写字母 [:print:] 所有的可打印字符,包括空格 [:punct:] 所有的标点字符 [:space:] 所有呈水平或垂直排列的空白字符 [:upper:] 所有的大写字母 [:xdigit:] 所有的十六进制数 [=字符=] 所有和指定字符相等的字符
匹配次数 :
* 其前面的字符出现任意次,0次或1次,或者多次 \? 其前面的字符出现0次或1次 \+ 其前面的字符出现1次或多次,至少出现1次 \{m\} 指定字符出现次数 \{m,n\} 至少出现m次,至多出现n次,范围取次 \{0,n\} 出现最多n次 \{m,\} 出现最少m次
位置锚定:
^ 行首锚定,用于模式的最左侧 $ 行尾锚定,用于模式的最右侧 ^……$ 整行, ^$ 空白行,^[[:space:]]*$ 空行或者有空白字符的行 \ 或 \b 词尾锚定 \ 精确锚定单词
分组及引用:
\{xy\}*ab 表示多个字符出现0,1或多次。 \ 在这里作为转义符使用 \(abcd\){1,3} 表示包含abcd字符串最少出现1次,最多出现3次 \(1..2\).* \1 \1 是指引用从左侧起第一个()之间的字符 \(1..2\).* \(3..4\)\2 \2 是指引用从左侧起第二个()之间的字符 \(1..2\).* \(3..4\).*\(5..6\)\3 \3 是指引用从左侧起第三个()之间的字符
使用实例:
查看显示 /etc/fstab 文件以 # 注释开头的行:
这里也可以不加【】:
-v 取反,即显示不以#注释的行,-o 选项为只显示匹配到的字符串:
显示 /etc/fstab 文件非注释的行,锚定行首为 # 注释的行,取反:
显示 /etc/fstab 文件以#号开头,后面跟一个空格,后面为任意长度任意字符的行, -c 选项可以统计匹配到的行数:
在 /tmp/fstab 文件中加入多个空白行,以#号开头,后面仅跟一个空格,且不以空白符结尾的行:
显示 /tmp/sshd_config 文件中不以#注释、空白行以及有空白字符的行:
显示 /etc/passwd 文件中用户名和用户SHELL为一样的行:
显示 /tmp 目录下,以非字母开头,后面跟一个字母,后面为任意长度任意字符的文件或者目录:
显示 /tmp 目录下以非字母开头,后面仅跟一个字母,然后以非字母结尾的文件和目录:
显示 /etc 目录下以p开头不以数字结尾的所有文件和目录:
显示 ip a 或者 ifconfig 命令中的IP地址,-E 选项为支持扩展正则表达式:
-l 选项可以列出包含字符串的文件列表:
-w 精确锚定字符串,相当于 :
egrep 的使用方法跟 grep 基本一致,不需要转义符 \ 看起来更简洁:
关于“Linux如何使用正则表达式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。