linux命令行 正则,在Linux命令行中使用正则表达式
上一节我们介绍过grep命令在搜索文本信息时的基本用法,其实,grep命令还可以配合正则表达式执行更加复杂的搜索操作。
本节我们将对如何在Linux命令行中使用正则表达式进行介绍。
所谓正则表达式,就是利用一些特殊符号构成的表达式,来模糊匹配字符串。下面是一些可用的正则表达式符号:
符号
符号含义
.
匹配除了换行符以外的任意字符
^
匹配一行的开始位置
$
匹配一行的结束位置
*
匹配零次或多次前面的字符或表达式
\
对下一个字符进行转义,使其成为普通的字符,例如\^会将^转义,使其成为普通的^符号,而不再表示匹配一行的开始位置。
[]
中括号可以匹配括号内的任一字符,例如 [aeiou] 表示匹配a、e、i、o、u中的任意一个字符,如果要匹配范围的话,可以在中间加'-',例如:[0-9]表示匹配0到9的任一字符。
()
对正则表达式进行分组
|
在分组中可以匹配|左侧的部分,或者匹配|右侧的部分
?
前面的字符可以存在,也可以不存在,例如a?bc表示匹配abc或者bc
{n}
匹配n次前面的字符
{n,m}
匹配最少n次,最多m次前面的字符
{n,}
匹配最少n次前面的字符,可以超过n次
下面我们举例来说明,我们先创建一个sample文件,并在sample中写入以下内容:
[root@localhost pcre_test]# cat sample
apple
bat
ball
ant
eat
pant
people
taste
[root@localhost pcre_test]#
我们先用grep查找包含字母a的文本行:
[root@localhost pcre_test]# cat sample | grep a
apple
bat
ball
ant
eat
pant
taste
[root@localhost pcre_test]#
可以看到,除了people所在的行,其他的包含字母a的文本行都匹配到了。接下来,我们用正则表达式来查找只以字母a开头的文本行:
[root@localhost pcre_test]# cat sample | grep ^a
apple
ant
[root@localhost pcre_test]#
通过 ^a 正则表达式,就只显示了以字母a开头的文本行。
再比如,下面的例子,是利用正则表达式将以字母t结尾的文本行显示出来:
[root@localhost pcre_test]# cat sample | grep t$
bat
ant
eat
pant
[root@localhost pcre_test]#
我们再来看个比较复杂的例子,假设sample文件的内容如下:
[root@localhost pcre_test]# cat sample
+12345
1adfsf
-67890
sdfsefs
55555
[root@localhost pcre_test]#
如果我们想将+12345和-67890匹配出来,可以使用下面的命令:
[root@localhost pcre_test]# grep -E "^(\+|\-)[0-9]+" sample
+12345
-67890
[root@localhost pcre_test]#
上面使用-E选项,告诉grep后面是一个正则表达式,这里将sample文件名放在最后,grep会去直接读sample的文件内容,然后在文件内容中根据正则表达式进行查找。
这里的正则表达式"^(\+|\-)[0-9]+",表示以+号或-号开头的,后面跟随了一串数字的文本行。
我们再来看下{n},{n,m},以及{n,}这类正则表达式的用法:
[root@localhost pcre_test]# grep -E "5{3}" sample
55555
[root@localhost pcre_test]# grep -E "5{1,2}$" sample
+12345
55555
[root@localhost pcre_test]# grep -E "5{3,}" sample
55555
[root@localhost pcre_test]#
上面grep会将匹配到的文本进行标红,例如"5{3}"表示匹配3个连续的5,并对这3个5进行了标红处理。"5{1,2}$"表示匹配结尾包含1个或2个5的文本行。"5{3,}"表示匹配最少包含3个连续的5的文本行。
如果grep的-E选项后面的正则表达式没有用引号(单引号或双引号)扩起来的话,像'{','}'之类的特殊符号,就需要在前面加上'\',才会被当成正则表达式,例如:
[root@localhost pcre_test]# grep -E 5\{3,\} sample
55555
[root@localhost pcre_test]#
否则就会被当成文件,并报文件不存在的错误:
[root@localhost pcre_test]# grep -E 5{3,} sample
grep: 5: No such file or directory
[root@localhost pcre_test]#
linux命令行 正则,在Linux命令行中使用正则表达式相关推荐
- java中正则匹配字符串长度_Java中使用正则表达式校验字符串
Java中使用正则表达式校验字符串 正则表达式是某一位伟大的数学家发明的,现在已经形成了一个ISO标准,这个标准和编程语言没有关系.至于具体谁发明的,怎么发明的,我也忘记了:). 正则表达式简单理解就 ...
- Java正则匹配美元表达式_Java中的正则表达式“ $”(美元)元字符
子表达式/元字符" $ "与行尾匹配. 例子1import java.util.regex.Matcher; import java.util.regex.Pattern; pub ...
- 正则数字和小数点_Python中的正则表达式【不断补充~】
首先,力推一个正则表达式效果测试网站,简洁好用,就是它了~ PHP, PCRE, Python, Golang and JavaScriptregex101.com 然后,贴一张正则表达式的常用符号 ...
- php用正则匹配远程图片,php中通过正则表达式下载内容中的远程图片的函数代码...
if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content ...
- java正则和python正则差距,在C/Java中处理正则表达式比在Python中快多少?
这可能更多地依赖于单个实现而不是语言.在 例如,某些模式在某些实现中是O(N2),而在其他实现中则是~O(N).具体地说,大多数重新实现都是基于NFAs(非确定性有限状态自动机)的.长话短说,这意味着 ...
- linux命令行 正则,Linux shell基础(四)正则表达式与grep命令 beta
一.正则表达式 之前学习find命令时,就已经接触过一些简单的正则,那么我们现在来学习一些复杂的正则.首先,我们还是来复习什么是正则表达式,看这个教程先,一定要多看几遍,至少知道正则大概长什么样子.( ...
- linux如何正则匹配删除一行,shell sed命令匹配替换删除最后第一行字符正则表
只显示每行的第一个单词 [root@localhost ~]# sed -r 's/([^0-9a-Z]+)(.+)//gp' passwd root bin daemon adm 打印每行3次:se ...
- linux命令大写输入,在Linux命令行内的大小写转换
在编辑文本时大小写常常是需要注意的地方,大小写的转换是很枯燥而繁琐的工作,所幸,Linux 提供了很多能让这份工作变得容易的命令.接下来让我们看看都有哪些完成大小写转换的命令. #### `tr` 命 ...
- Linux命令行–更多bash shell命令(转)
4.1.1 探查程序 ps 命令 默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户进程的进程 显示的当前进程的项目 进程号 运行在哪个终端(tty) 进程占用的CPU时间 Linux系统支 ...
最新文章
- 如何卸载sql2008,完全清除
- mysql count if语句_COUNT分组条件去重的sql统计语句示例(mysql)
- Dynamic Data Web Application编译是报GetActionPath调用模糊解决办法
- JavaWeb从开发环境搭建,到第一个servlet程序(图文)
- [HDU5739]Fantasia(圆方树DP)
- webgame php源码,最WEB游戏源码服务端(完整修改版).doc
- 非线性优化问题---MATLAB
- 如何快速入门RTOS
- 史莱姆区块查找 超简单java代码
- LabVIEW Arduino无线蓝牙遥控智能车(项目篇—2)
- Ext js 下拉框模糊匹配查询,并支持反复输入检索
- 题解 luoguP3513 【[POI2011]KON-Conspiracy】
- 给mongodb设置密码
- 电力系统暂态分析复习
- video监听上次播放时间点下次进入后继续播放
- 2020.2.2版idea的file mask 为空解决办法
- (C语言)八大排序之:希尔排序
- Kubios HRV心率变异性分析软件
- 《高效15法则》读书笔记
- 从“在快餐店吃饭”到Command模式(一)
热门文章
- 全国大学生智能汽车竞赛证书打印方法
- 串口ISPHUB制作
- mysql数据库支持的锁粒度包括_1. Mysql的并发(锁策略、锁粒度、事务)
- 苏教版四下用计算机计算,苏教版四年级下册数学单元测试-4.用计算器计算 (含答案)...
- linux5.5内核,一条命令就可以升级到Linux 5.5内核或Linux 5.5以上版本
- 安装testlink时mysql_windows下安装testlink
- 恩智浦智能车大赛2020_2020年中国人工智能机器人大赛在宝鸡市会展中心举办
- rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
- mysql server_id作用_在MySQL中设置`server-id`变量不起作用
- 有计算机二级证书当兵有好处吗,大学生拿到这个证书可享受的福利,当兵有什么不一样?...