grep与正则表达式01-基础知识

本文旨在学习grep命令,基本/扩展正则表达式

1. grep命令

grep:根据模式搜索文本,并将符合的文本显示出来。本身的意义就是做部分匹配的。

pattern(模式):文本字符和正则表达式的元字符组合而成匹配条件。

 grep常用选项:

-o:只显示被模式匹配到的字符串

-n:在匹配到的字符串行首显示行号

-v:显示没有被模式匹配到的字符串

-i:表示忽略字符大小写

-c:计算匹配到的字符串的次数

-w:只显示全字符符合的行

-x:只显示全行符合的行

-q:静默模式,不输出任何信息

-E: 使用扩展的正则表达式

-A #(数字):显示被匹配到的行和后面的#行

-B #(数字):显示被匹配到的行和前面的#行

-C #(数字):显示上下文

2. 基本的正则表达式 REGular EXEperssion REGEXE

元字符:

.   :匹配任意单个字符

[]  :匹配指定范围内的任意单个字符

[^] :匹配指定范围外的任意单个字符

字符集合:

[:digit:] 数字

[:lower:] 小写字母

[:upper:] 大写字母

[:alpha:] 所有字母

[:alnum:] 所有数字和字母

[:space:] 空白字符

[:punct:] 标点符号

 匹配次数(贪婪模式):

*  :匹配其前面的字符任意次(也可以是0次)

.* :任意长度任意字符

\?(反斜线做转义) :匹配其前面的字符1次或者0次。

\{m,n\} :匹配其前面的字符至少m次,至多n次

\{1,\} :表示至少1次

\{0,3\} :最多3次

 位置锚定:

^  :锚定行首,此字符后面的内容必须出现在行首

$  :锚定行尾,此字符前面的任意内容必须出现在行尾

^$ :匹配空行

^[[:space:]]*$ :空白行

\<或者\b :锚定词首,其后面的任意字符必须作为单词的首部出现

\>或者\b :锚定词尾,其前面的任意字符必须作为单词的尾部出现

\<root\>或者\broot\b :表示必须是root整个单词出现

注意:\b有时候会显示不准确,建议尽量显示\<,\>。

 分组:

\(\)

\(ab\)* :后向引用,把ab作为一个整体,可以出现0次,1次或者任意次。

\1 :引用第一个左括号与之对应的右括号所包含的所有内容

\2 :

\3 :

3. 扩展的正则表达式

字符匹配(与基本的正则表达式相同)

. :匹配任意单个字符

[] :匹配指定范围内的任意单个字符

[^] :匹配指定范围外的任意单个字符

次数匹配:

*

.* :匹配任意长度的任意字符

? :匹配其前面的字符1次或者0次

+  :匹配其前面字符至少一次,相当于\{1,\}。?和+组合相当于*

{m,n} :做次数匹配。扩展正则表达式不用加反斜线。

例:取一个路径的基名

[[email protected] ~]# echo /etc/sysconfig/network | egrep  -o ‘[[:alnum:]]+/?$‘

network

[[email protected] ~]# echo /etc/sysconfig/ | egrep  -o ‘[[:alnum:]]+/?$‘

sysconfig/

注意:体会?这里的妙用。

位置锚定:(与基本的正则表达式相同)

^ :锚定行首

$ :锚定行尾

\<或\b:锚定词首

\>或\b:锚定词尾

分组:

()

\1, \2, \3, …….后项引用

|   :或者(or的意思)

a|b :a或者b

C|cat :C或者cat

4. 练习题

http://zhangbei.blog.51cto.com/11081042/1775836

时间: 2024-10-20 05:56:25

grep与正则表达式01-基础知识的相关文章

正则表达式的基础知识

概念: 正则表达式使用单个字符串来描述.匹配一系列符合某个 句法规则的字符串. 使用场景: 在很多文本编辑器里,正则表达式通常被用来检索.替换 那些符合某个模式的文本. tip 1.处理正则表达式的工具会提供一个忽略大小写的选项, 2.只使用一个正则表达式,可能不能准确的第筛选,这时,可以采用分支结构,但是分支结构使用过程中,也要注意各个表达式的先后顺序: 3.但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:((2[0-4]\d|25[0

01 基础知识-计算机硬件

---恢复内容开始--- 计算机抽象模型: cpu.内存以及I/O设备都是由一条系统总线(bus)连接起来并通过总线与其他设备通讯 现在计算机的结果更复杂,包括多重总线 CPU: CPU是计算机的大脑,它从内存中取指令->解码->执行,然后重复该步骤,直至整个程序被执行完成. cpu内部都有一些用来保存关键变量和零时数据的寄存器 寄存器分类: 通用寄存器,用来保存变量和临时结果 程序计数器,它保存了将要取出的下一条指令的内存地址.在指令取出后,程序计数器就被更新以便执行后期指令 堆栈指针,它指

scala和正则表达式常用基础知识示例

http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html .     匹配除换行符以外的任意字符\w     匹配字母或数字或下划线或汉字\s     匹配任意的空白符\d     匹配数字\b     匹配单词的开始或结束^     匹配字符串的开始$     匹配字符串的结束在[]里面不需要转义,在外面,如().?之类的字符是需要转义的.后向引用示例:\b(\w+)\b\s+\1\

汇编学习笔记01(基础知识)

自己在学习C语言的时候, 有的时候碰到自己理解不了的技术点的话, 就无从下手了, 但是这些技术点如果用汇编来理解的话, 可能非常好理解, 也更容易让大家理解, 所以感觉汇编是很强大的, 对我们学习一些其它的高级语言也很有用, 所以希望自己可以对伟大的汇编语言有一定的了解和认知, 对计算机的思维方式也有更进一步的认识, 对自己的编码习惯有一个好的影响或者改变, 同时对自己的能力有些提高吧. 1. 我们首先要知道什么是机器语言? 也就是机器指令的集合, 机器指令也就是一台机器可以正确执行的命令. 机

c++进阶之路01基础知识

一个函数的定义包含四部分:返回类型,函数名,一个括号包围的形参列表(允许为空),以及函数体. c++没有定义任何输入输出(IO)语句,取而代之,包含了一个全面的标准库(SL)来提供IO机制.使用iostream库,它包含两个类istream和ostream,分别表示输入流和输出流.记住流想要表达的是,随着时间的推移,字符是顺序生成或消耗的.标准库定义了4个对象,cin,cout,cerr,clog. cout<<"Hello,world"<<"Welc

编程入门:C语言基础知识全网超全不用到处找了!(文末附清单)

你背或者不背,干货就在那里,不悲不喜 你学或者不学,编程就在那里,不来不去 听到这话的你是否略感扎心? 编程入门:C语言基础知识全网超全不用到处找了!(文末附清单)01基础知识 计算机系统的主要技术指标与系统配置. 计算机系统.硬件.软件及其相互关系. 微机硬件系统的基本组成. 包括:中央处理器(运算器与控制器),内存储器(RAM与ROM),外存储器(硬盘.软盘与光盘),输入设备(键盘与鼠标)输出设备(显示器与打印机).如果大家如果在自学遇到困难,想找一个C++的学习环境,可以加入我们的C++学

正则表达式基础知识(一)

之前在linux中用到三剑客grep.awk.sed等,简单的接触过正则表达式,但是没有深入的了解正则表达式,又一次在python里面接触到正则表达式,所以想着尽量一次攻克正则表达式,所以就将自己学习印记留在此处,供自己复习,同时也将相关知识分享给大家. 分享几个在线测试与学习正则的地址: (1)http://deerchao.net/tutorials/regex/regex.htm  正则表达式30分钟入门 (2)http://tool.oschina.net/regex/ 在线测试以及有部

&lt;&lt;Python基础教程&gt;&gt;学习笔记之|第01章|基础知识

本学习笔记主要用要记录下学习<<Python基础教程>>过程中的一些Key Point,或自己没怎么搞明白的内容,可能有点杂乱,但比较实用,查找起来也方便. 第01章:基础知识 ------ Jython:      Python的Java实现,运行在JVM中,相对稳定,但落后于Python,当前版本2.5,在TA(Python+Robot)会用到 IronPython:  Python的C#实现,运行在Common Language Runtime,速度比Python要快 >

java正则表达式基础知识(转)

1基础 2.1 简单字符类 构造 描述 [abc] a,b或c [^abc] 除a,b或c外的字符 [a-zA-Z] a至z 或 A至Z [a-d[m-p]] a至d 或 m至p [a-z&&[def]] d,e或f @Test public void testChar() { //匹配 b,c或d assertTrue("d".matches("[bcd]")); //匹配除 a,b,c 以外的字符 (否定) assertTrue("d&