grep及正则表达式
文本搜索工具:grep,egrep,fgrep
GREP介绍
grep: 根据模式条件搜索文本,并将符合模式的文本行显示出来。
过滤条件:文本字符和正则表达式的元字符组合而成匹配条件
以正则表达式的元字符,以及正常字符组合而成。即pattern(模式)
grep命令语法:
grep [options] PATTERN [FILE...]
--colo[u]r:加颜色
-v:反向查找(显示没有被模式匹配到的行)
-o:只显示被模式匹配到的字符串
-i: 搜索时不区分字符的大小写
-E: 扩展正则表达式
二)正则表达式(REGEXP)
即有元字符及正常字符所书写的模式,其中的 元字符不表示字符本身的意义,而是表达控制及通配的功能
基本正则表达式(grep):
案例1:
root@localhost ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
1、基本正则表达式元字符
1)字符匹配
. 匹配单个字符(只能匹配一个)
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[[:digit:]] [[:lower:]][[:upper:]] [[:space:]] [[:punct:]] [[:alnum:]] [[:alpha:]]
[root@localhost ~]# grep "[nN][^[:alpha:]]" /etc/rc.d/rc.sysinit
2)次数匹配(在期望匹配的字符后面,提供一个控制符,用于表达匹配其前面的字符匹配的次数)
* 任意长度 (0次、1次、多次)
.* 任意字符任意次数
\? 匹配0或1次(其左侧字符可有可无)
\+ 匹配1次或多次(其左侧字符至少出现1次)
\{m\}精确匹配m次(其左侧字符精确出现m次)
\{m,n\} 至少m次,至多n次
\{0,n\} 至多n次
\{m,\}至少m次
3)位置锚定
^ 锚定行首
$ 锚定行尾
^$: 模式匹配整行内容
\< 锚定词首 \<pattern
\> 锚定词尾 pattern/>
\</> 匹配整个单词
[root@localhost ~]# ifconfig |grep "\<[0-9]\{2\}\>"
4) 分组
\(\)
注意:分组中的模式,在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存到内置的变量中,这些变量是\1,\2)因此,可以被引用
"\(a.b\).*\1"
\1:引用:模式中自左而右,由第一个左括号以及与之对应的右括号的模式所匹配到的内容
\2 引用 模式自左向右,由第二个左括号与之对应的右括号中模式所匹配到的内容
[root@localhost ~]# grep "\(l..e\).*\1" aa.txt
[root@localhost ~]# netstat -tna |grep "LISTEN[[:space:]]*"
[root@localhost ~]# grep "^\([[:alnum:]]\+\)\>.*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
nologin:x:2004:2004::/home/nologin:/sbin/nologin
扩展正则表达式:(egrep)
字符匹配:
. 匹配任意单个字符
【】括号内的指定字符
次数匹配:
* 任意次
? 0或1次
+ 至少1次
{m}:精确匹配m次
{m,n}:至少m次,至多n次
{0,n}:至多n次
位置锚定
^ 行首
$ 行尾
\< 词首
\> 词尾
分组
()
引用:\1,\2
或者: a|b(a或者b)
[root@localhost ~]# grep -E "^(s|S)" /proc/meminfo
[root@localhost ~]# egrep --color "^([[:alnum:]]+\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
nologin:x:2004:2004::/home/nologin:/sbin/nologin
grep及正则表达式的更多相关文章
- Linux grep与正则表达式
grep命令 格式:grep [-acinv] [--color=auto] '查找字符串' filename -a 将binary文件以text文件的 -c 计算找到 ‘查找字符串’ ...
- grep和正则表达式
正则表达式示例表字 符 意 义 示 例* 任意长度的字符串. a* 表示: 空字符串.aaaa.a…? 长度为0或者1的字符串. a? 表示: 空字符串和a.+ 长度为一个或者多个的字符串. a+表示 ...
- grep与正则表达式,grep、egrep和fgrep
grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...
- 第5天(半天)【shell编程初步、grep及正则表达式】
第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...
- [Linux 006]——grep和正则表达式
在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...
- grep与正则表达式使用
grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...
- grep用法详解:grep与正则表达式【转】
转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...
- linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)
本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...
- grep使用正则表达式搜索IP地址
递归搜索当前目录及其子目录.子目录的子目录……所包含文件是否包含IP地址 grep -r "[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit: ...
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
随机推荐
- 318. Maximum Product of Word Lengths
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...
- MFC CEdit改变字体大小的方法
方法很多,这里讲解两种比较简单的方法,也是从google上搜索来的. 方法一: CWnd* pEdit; pEdit = GetDlgItem(IDC_EDIT_ONE); ASSERT(pEdit ...
- Flex 中画图工具(drawTool)失效
做项目的时候画图工具突然失效,解决了半天都不行,最后将画图结束的函数map_drawEndHandler写在方法里面的时候,运行却能够画图了,不知道是什么原理,比较头疼,左思右想,都感觉有点怪怪的,虽 ...
- Office 365 系列五 -------- Imap邮箱迁移步骤
当客户购买了我们的Office 365之后,第一个功能必然是会用我们的企业邮箱,如果企业之前是用 263.腾讯.网易等的邮件厂商的话,必然会涉及到邮件的迁移, 其实说到邮箱迁移,我们办法很多,如果人数 ...
- 大毕设-MATLAB-FFT实现
引用来自:http://blog.csdn.net/sinwel/article/details/8115673 %仿真参数中的含义 % Ts 表示间隔Ts时间采样,这个越小越接近连续信号,而实际上不 ...
- camstar --设备保养
- cocos2d-x学习
http://www.cocos2d-x.org/wiki/How_to_Start_A_New_Cocos2D-X_Game Cocos2d-x版本:cocos2d-x-3.6 一.设置脚本参数 1 ...
- 二、innerHTML应用测试
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>inne ...
- matlab 连续读取多个文件
方法1: 把文件的文件名按一定的规律命名,假如:filename1.txt,filename2.txt,...,fielname100.txt,在读取的时候则可以使用循环: for i = 1:100 ...
- VS2010+C#+在新建类或接口时在文件开头自动生成作者和日期等备注
今天在公司项目准备开始,为达到项目的规范管理,要求每个文件的标准日期,作者等信息,搜集了百度的资料,新建文件时效果如下: 其实原理很简单,只要修改VS,IDE文件下的类(或接口)模版代码 文件路径:C ...