grep 正则2
- 基本正则表达式所定义的元字符
| 元字符 | 作用 | 例子 | 例子说明 |
|---|---|---|---|
| ^ | 行首定位符 | ^ty | 匹配"t"开头,后面紧跟一个"y"的字符串 |
| $ | 行尾定位符 | txt$ | 匹配以"t"结尾,前面两个字符是"t""x"的字符串 |
| . | 单个字符匹配 | s. | 匹配"s"后面有一个字符的字符串 |
| * | 限定符 | s* | "*"表示匹配其前导字符若干次,包括0次。这里是匹配有若干个"s"的字符串 |
| [] | 字符集匹配 | [abc] | 表示匹配"a","b"或"c"的字符串 |
| [^] | 字符集不匹配 | [^abc | 表示不匹配"a","b","c"里的任意字符 |
| () | 子表达式 | ([0-9]{2})? | 匹配两个或0个数字 |
| x{m,n} | 区间表达式 | a{2,3} | 表示"a"重复2~3次 |
- 扩展正则表达式的元字符
| 元字符 | 作用 | 例子 | 例子说明 |
|---|---|---|---|
| + | 限定符,同* | s+ | "+"表示匹配其前导字符若干次,至少1次 |
| ? | 限定符 | ss? | "?"表示前面的字符可以重复0或1次。这里是一个"s"后面可能再跟一个"s" |
- POSIX字符集
不同国家的字符编码很有可能不同,例如:
LANG=C:A B C D ... Z a b c d ...z
LANG=zh_TW:a A b B c C d D ... z Z
当采用第二种编码时,[A-Z]之间会包括小写字母b-z。所以为了避免这种问题,可以使用POSIX字符集来使用特定的字符类。
| 字符类 | 说明 |
|---|---|
| [:alnum:] | 匹配任意一个字母或者数字,等价于A-Za-z0-9 |
| [:alpha:] | 匹配任意一个字母,等价于A-Za-z |
| [:digit:] | 匹配任意一个数字,等价于0-9 |
| [:lower:] | 匹配小写字母,等价于a-z |
| [:upper:] | 匹配大写字母,等价于A-Z |
| [:graph:] | 匹配一个看的见的字符,不包括空白字符 |
| [:print:] | 匹配一个可以打印的字符 |
| [:blank:] | 匹配空格和tab |
| [:space:] | 匹配一个空白字符,包括空格、tab、换行、分页符< |
| [:punct:] | 匹配一个标点符号 |
| [:xdigit:] | 匹配一个十六进制数字,即0-9,a-f,A-F |
【注意】这些字符类要放在方括号中,才能表示字符集匹配:[[:alnum:]] = [A-Za-z0-9]
三、grep与正则表达式的例子
(1)简单匹配
#匹配空行
egrep "^$" testfile
#匹配所有英文字符
egrep "[a-zA-Z]" testfile
#匹配tast或者test
egrep "t[ae]st" testfile
#匹配以字符s开头,紧跟若干b的文件名
ll | egrep "^sb*"
#匹配txt文件
ll | egrep "\.txt$" #这里的"."需要进行转义
(2)复杂一些的匹配
#匹配QQ号码,第一位不能是0,5位以上的数字。
egrep "[1-9][0-9]{4,}" testfile
#匹配IP地址,共4组数字,用"."隔开
egrep "^([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\. #第一组数字
([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\. #第二组数字
([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\. #第三组数字
([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" #第四组数字
testfile
#匹配邮箱地址
egrep "^[a-z0-9]([a-z0-9]*[-_]?[a-z0-9]+)*@
([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$"
此处注意:区间表达式{}应该写成"\{\}"表示转义,实验中发现加不加"\"转义都能得出正确结果,但是直接使用基本正则表达式(grep不加-E选项)则不行。所以应该是扩展正则表达式中取消了这个需要转义字符的地方。
四、其他
琐碎的片段:
当需要将元字符当作普通字符匹配的时候,需要转移字符"\",但是当元字符位于"[]"中时,除了"-"或者"^"极少数元字符以外,其它的自动转义为普通字符。
正则表达式从左到右计算,遵循一定的优先级:转义符"\" > 方括号"[]" > 分组 "()" > 限定符"*,+,?,{}" > 普通字符 > 定位符"^,$" > 或"|"。
匹配同一种字符可能有多种正则表达式的写法。
shell本身不支持正则表达式,但是支持"*","?"等通配符。
支持正则表达式的还有sed命令,awk命令。以后可以详述。
作者:tyrone_li
链接:https://www.jianshu.com/p/6c04b85d4544
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
grep 正则2的更多相关文章
- grep 正则表达
常见的 grep 正则表达参数 -c # 显示匹配到得行的数目,不显示内容 -h # 不显示文件名 -i # 忽略大小写 -l # 只列出匹配行所在文件的文件名 -n # 在每一行中加上相对行号 -s ...
- shell grep正则匹配汉字
Shell grep正则匹配中文 测试文本 demo_exe.c,内容如下,需要注意保存的编码格式,对输出到终端有影响: 我们中文操作系统ASNI默认是GBK的. #include<stdio. ...
- liux三剑客grep 正则匹配
001正则匹配(大部分需要转义) ‘^‘: 锚定行首 '$' : 锚定行尾 [0-9] 一个数字 [^0-9] 除去数字所有,^出现在[]这里表示取反 [a-z] [A-Z] [a-Z] \s 匹配空 ...
- grep 正则问题 this version of PCRE is compiled without UTF support
问题 在使用grep -P,出现如下报错: grep: this version of PCRE is compiled without UTF support 原因 有些系统支持的正则规范不同. 解 ...
- sed与grep正则
string editor 流编辑器 sed编辑器是一行一行的处理内容,正在处理的内容存放在缓冲区内,处理完后 按照选项的规定进行输出或者修改文件 option: -n 静默模式结合p可以只输出修 ...
- [Linux] shell中for循环grep正则统计指定关键字
需求是统计某个业务的访问个数日志服务器上的目录结构是如下,搜索最近7天的指定关键字数据,并排重统计个数: drwxr-xr-x root root Nov : -- drwxr-xr-x root r ...
- linux grep 正则
grep : 显示匹配行 -v: 反显示 -e 使用扩展正则表达式 黑色字体表明是原生正则表达式 红色字体表明是扩张正则表达式 1.匹配操作符 \: 转义字符串(正则使用扩展字符操作 没有使用-e ...
- day11 grep正则匹配
ps aus | trep nginx # 查看所有正在运行的nginx任务 别名路径: alias test_cmd='ls -l' PATH路径: 临时修改: PATH=$PATH:/usr/lo ...
- Linux 命令 - grep: 正则搜索文本
grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --he ...
- grep 正则匹配
\{0,n\}:至多n次 \{\ 匹配/etc/passwd文件中数字出现只是数字1次到3次 匹配/etc/grub2.cfg文件以一个空格开头匹配一个字符的文件的所有行 显示以LISTEN结尾的行 ...
随机推荐
- 配置进程外Session 同时解决一个奇怪的BUG 因为SQLserver 服务器名不是默认的.或者localhost而引发的一系列问题
用公司的电脑学习如鹏网的视频,开发一个项目,用到了进程外session,因为公司电脑SQLServer 是2008 服务器名称是. 然后参考这篇文章进行设置进程外session 很顺利 完成了设置. ...
- 2018-2-13-win10-UWP-九幽登录
title author date CreateTime categories win10 UWP 九幽登录 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...
- java 比较运算
/* 比较运算符: 大于 > 小于 < 大于等于 >= 小于等于 <= 等于 == 不相等 != 注意事项: 1.比较运算符的结果一定是一个boolean值,成立就是true, ...
- Vue2 实现时空穿梭框功能模块
前言 这篇文章主要是分享一个时空穿梭框功能,也就是我们平时用的选择功能.勾选了的项就会进入到另一个框中. 时空穿梭框之旅 示例演示: 这个时空穿梭框实现了: 1.可以全选.反选 2.没有选中时,不可以 ...
- 如何用Word制作斜线表头?
如何用Word制作斜线表头?遇到这种问题,你一般是如何操作?本期企业网盘坚果云干货分享与大家分享有关斜线表头的制作方法. 斜线表头分单斜线表头和多斜线表头,下面分情况来了解相关的解决办法. 单斜线表头 ...
- Jpa动态多表if多条件联合查询,并对查询结果进行分页
public Page<Map<String, Object>> resourceList(TeachingInfo teachingInfo, Pageable pageab ...
- pywin3的简介
微软Windows的Python扩展提供了对Win32 API的访问.创建和使用COM对象的能力以及PythOnWin环境.Pywin32是一个Python库,为python提供访问Wind ...
- nucleus学习
task的TCB结构: typedef struct TC_TCB_STRUCT { /* Standard thread information first. This information is ...
- CSS 的基础语法
1.基础语法规则 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 每条声明由一个属性和一个值组成.每个属性有一个值.属性和值被冒号分开. selector {property: val ...
- 【C#技术】一篇文章搞掂:Infragistics组件库
工具栏 // 按钮不可按 tool.SharedProps.Enabled = false; Grid // Grid中记录时间 // 建议SQL Server中使用字符字段(没有深入测试,只是字符字 ...