linux grep和正则表达式
虽然正则表达式经常都在用,但是很少能够静下心来仔细的总结一下。最近看了一个台湾人的网站叫做鸟哥Linux私房菜,关于正则表达式的描述挺详细的。在此,我进行一下总结,如果想仔细的学习正则表达式,请访问鸟哥Linux私房菜,台湾同胞的网站是繁体中文的,需要点儿耐心。
正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理。本文以grep为例来讲解正则表达式。
grep命令
功能:输入文件的每一行中查找字符串。
基本用法:
grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名
参数说明:
-a:将二进制文档以文本方式处理
-c:显示匹配次数
-i:忽略大小写差异
-n:在行首显示行号
-A:After的意思,显示匹配字符串后n行的数据
-B:before的意思,显示匹配字符串前n行的数据
-v:显示没有匹配行-A:After的意思,显示匹配部分之后n行-B:before的意思,显示匹配部分之前n行
--color:以特定颜色高亮显示匹配关键字
–color选项是个非常好的选项,可以让你清楚的明白匹配了那些字符。最好在自己的.bashrc或者.bash_profile文件中加入:
alias grep=grep --color=auto
每次grep搜索之后,自动高亮匹配效果了。
‘搜寻字符串’是正则表达式,注意为了避免shell的元字符对正则表达式的影响,请用单引号(’’)括起来,千万不要用双引号括起来("”)或者不括起来。
正则表达式分为基本正则表达式和扩展正则表达式。下面分别简单总结一下。
基本正则表达式
正则表达式学习,主要是对正则表达式元数据的学习。正则表达式本身没有什么高深的东西,本文仅仅对基本正则表达式的元数据进行一下总结:
| 
 元数据  | 
 意义和范例  | 
| ^word | 搜寻以word开头的行。
 例如:搜寻以#开头的脚本注释行 grep –n ‘^#’ regular.txt  | 
| word$ | 搜寻以word结束的行
 例如,搜寻以‘.’结束的行 grep –n ‘.$’ regular.txt  | 
| . | 匹配任意一个字符。
 例如:grep –n ‘e.e’ regular.txt 匹配e和e之间有任意一个字符,可以匹配eee,eae,eve,但是不匹配ee。  | 
| \ | 转义字符。
 例如:搜寻’,’是一个特殊字符,在正则表达式中有特殊含义。必须要先转义。 grep –n ‘\” regular.txt  | 
| * | 前面的字符重复0到多次。
 例如匹配gle,gogle,google,gooogle等等 grep –n ‘go*gle’ regular.txt  | 
| [list] | 匹配一系列字符中的一个。
 例如:匹配gl,gf。 grep –n ‘g[lf]’ regular.txt  | 
| [n1-n2] | 匹配一个字符范围中的一个字符。
 例如:匹配数字字符 grep –n ‘[0-9]’ regular.txt  | 
| [^list] | 匹配字符集以外的字符
 例如:grep –n ‘[^o]‘ regular.txt 匹配非o字符  | 
| \{n1,n2\} | 前面的字符重复n1,n2次
 例如:匹配google,gooogle。 grep –n ‘go\{2,3\}gle’ regular.txt  | 
| \<word | 单词是的开头。
 例如:匹配以g开头的单词 grep –n ‘\<g’ regular.txt  | 
| word\> | 匹配单词结尾
 例如:匹配以tion结尾的单词 grep –n ‘tion\>’ regular.txt  | 
扩展正则表达式
grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。
扩展正则表达式就是在基本正则表达式的基础上,增加了一些元数据。
| 
 元数据  | 
 意义和范例  | 
| + | 重复前面字符1到多次。
 例如:匹配god,good,goood等等字符串。 grep –nE go+d’ regular.txt  | 
| ? | 匹配0或1次前面的字符
 例如,匹配gd,god grep –nE ‘go?d’ regular.txt  | 
| | | 或(or)的方式匹配多个字串   例如:grep –nE ‘god|good’ regular.txt 匹配god或者good。  | 
| () | 匹配整个括号内的字符串,原来都是匹配单个字符
 例如:搜寻good或者glad grep –nE ‘g(oo|la)’ regular.txt  | 
| () | 前面的字符重复0到多次。
 例如匹配gle,gogle,google,gooogle等等 grep –nE ‘go*gle’ regular.txt  | 
Linux下面正则表达式博大精深,上文支持总结了最常用的部分,如果熟练掌握的上面部分的正则表达式基本上可以满足日常使用了。
另外Linux很多命令支持正则表达式,比如find,sed,awk等
linux grep和正则表达式的更多相关文章
- Linux grep与正则表达式
		
grep命令 格式:grep [-acinv] [--color=auto] '查找字符串' filename -a 将binary文件以text文件的 -c 计算找到 ‘查找字符串’ ...
 - linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)
		
本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...
 - Linux grep 命令中的正则表达式详解
		
在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expres ...
 - [Linux 006]——grep和正则表达式
		
在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...
 - Linux文本处理三剑客之grep及正则表达式详解
		
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
 - linux grep命令
		
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
 - linux grep命令详解
		
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
 - 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
		
http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...
 - linux grep命令总结
		
风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园 首页 新随笔 联系 订阅 管理 posts - 791, comments - 394, trackba ...
 
随机推荐
- Swift构造器重载
			
与函数一样,方法也存在重载,其重载的方式与函数一致.那么作为构造器的特殊方法,是否也存在重载呢?答案是肯定的.一.构造器重载概念Swift中函数重载的条件也适用于构造器,条件如下:函数有相同的名字:参 ...
 - Xcode7中添加3DTouch
			
首先是插件SBShortcutMenuSimulator的安装 1.git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.g ...
 - javascript笔记——JavaScript经典实例
			
转载自百度文库 http://wenku.baidu.com/view/9a703522bcd126fff7050bfa.html 1. oncontextmenu="window.even ...
 - extends 与 implements 的区别
			
extends与implements是Java继承中使用的两个关键字,但extends与implements使用的情景不同: 1.接口继承接口,使用extends 2.类继承类时,用extends 3 ...
 - JQuery的过滤选择器
			
1.eg(num):查找索引num位置的元素,索引从0开始. 2.lt(num):查找索引小于num位置的元素,索引从0开始. 3.gt(num):查找索引大于num位置的元素,索引从0开始. 示例: ...
 - javascript的setTimeout以及setInterval休眠问题。
			
前端码农们在做项目中时候,必定不可少的需要做到轮播效果.但是有些特殊的需求,比如: 需要做到第一个容器内容轮播滚动之后,第二个容器内部再轮播滚动,再第三个容器内容轮播滚动. 这时候我的一开始的思路是: ...
 - Windows 8.1 (64bit) 下搭建 MongoDB 2.4.9 环境
			
一.下载MongoDB 2.4.9版 进入MongoDB官方网站的下载页面. 找到Windows 64-bit版的下载链接进行下载. 二.安装MongoDB 2.4.9版 将下载的文件解压到任意目录. ...
 - 《PHP与MySQL WEB开发》读书笔记
			
<PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...
 - CentOS安装,更新Python
			
1.查看当前Python版本 python -V 2.查看当前CentOS版本 cat /etc/redhat-release 3.安装所有的开发工具包 yum groupinstall " ...
 - PIL 安装
			
1.安装依赖包 1.1 ubuntu安装 apt-get install python-devapt-get install libjpeg-dev apt-get install libjpeg8- ...