Linux grep命令的一些使用体会

Linux grep 命令

Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本。
2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本。
3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式。并且是唯一可以并行匹配多个字符串的版本。

grep语法格式:
grep [option]... ‘PATTERN‘ FILE...

options:
-E : 使用扩展正则表达式进行匹配, grep -E 或取代 egrep 命令。
-F : 使用固定字符串进行匹配, grep -F 或取代传统的fgrep命令。

-A #:显示匹配字符串的后面所有行。
-B #:显示匹配字符串的前面所有行。
-C #:显示匹配字符串的前面后面的行。
-e : 通常第一个非选项的参数认为是要匹配的模式,也可以同时提供多个模式,只要将其放入单引号,并用换行字符分隔他们。
  模式以减号开头时,为防止混淆其为选项,-e选项说明其后的参数为模式,即使他以减号开头。
-f : 从pat-file文件读取模式作为匹配。
-i : 模式匹配时忽略大小写差异。
-l : 列出匹配模式的文件名称,而不是打印匹配的行。
-q : 静默的,如果匹配成功,不将匹配的行输出到标准输出;否则即是不成功。
-s : 不显示错误信息,通常与-q并用。
-v : 取反。
-o: 仅显示匹配的字串,而非字串所在的行。
--color=auto: 匹配的字符出现颜色。
-n:显示匹配行及行号。
-c 只输出匹配行的计数。
说明:可以同时查找多个文件中的内容,当指定多个文件时,每个显示出的文件行前会有文件名加一个冒号标识其来自哪个文件。
可以使用多个-e 或 -f 选项,建立要查找的模式列表。

正则表达式:
是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;

元字符:
不表示其字面意义,而用于额外功能性描述

正则表达式:
正则表达式引擎

基本正则表达式:没有特殊意义的字符 grep
扩展正则表达式: 元字符,有在正则表达式中有特殊意义 egrep,grep -E
fgrep: fast, 不支持使用正则表达式

字符匹配:
.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[0-9], [[:digit:]] : 数字字符
[a-z], [[:lower:]] :小写字母字符
[A-Z], [[:upper:]] :大写字母字符
[[:space:]] :空格字符
[[:punct:]] :标点符号字符
[[:alpha:]] :字母字符
[[:alnum:]] :数字字符

次数匹配元字符:用于实现指定其前面的字符所能够出现的次数
*: 任意长度,它前面的字符可以出现任意次
例如:a*b
aab, abb, b,
\?: 0次或1次,它前面的字符是可有可无的
例如:a\?b
ab, b, cb
{m}: m次,它前的字符要出现m次
例如:a{2}b
ab, aab, b, aaaab, abb
{m,n}: 至少m次,至多n次
例如:a{2,5}b
ab, b, aab
{m,}:至少m次
{0,n}: 至多n次

位置锚定:
^ : 行首锚定;匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义
写在模式最左侧

$: 行尾锚定:匹配前面的正则表达式,在字符串或者行结尾处。BRE中仅在正则表达式的结尾处有特殊的含义,ERE中在任何位置都有特殊含义
    写在模式最右侧

^$:  匹配空白行
\   :  通常用于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}
[]  : 匹配方括号内的任一字符,其中可用连字符(-)指的连续字符的范围;^符号苦出现在方括号的第一个位置,则表示匹配不在列表中的任一字符,

不包含特殊字符的连续字符组成的串叫单词:
\<: 词首,出现于单词左侧,\b
\<char
\>: 词尾,出现于单词右侧, \b
char\>

扩展正则表达式:
字符匹配:
.
[]
[^]
次数匹配:
:任意次
?: 0次或1次
+: 至少1次
{m}: 精确匹配m次
{n,m}: {n}指重现n次;{n,m}指重现n至m次
{m,}:至少m次
{0,n}:至多n次
锚定:
^
$
\<, \b
\>, \b
^$, ^[[:space:]]
$
分组:
()
引用:\1, \2, \3

或者:
a|b: a或者b
con(C|c)at
concat或conCat?
conC或cat

grep -E ‘PATTERN‘ FILE...
egrep ‘PATTERN‘ FILE...

常用Linux/Unix工具中的表示法

PCRE记法 vi/vim grep awk sed
* * * * *

注:PCRE中常用\b来表示“单词的起始或结束位置”,但Linux/Unix的工具中,通常用\<来匹配“单词的起始位置”,用\>来匹配“单词的结束位置”,sed中的\y可以同时匹配这两个位置。

原文地址:http://blog.51cto.com/4081735/2103505

时间: 2024-11-03 22:43:34

Linux grep命令的一些使用体会的相关文章

linux grep命令详解

linux grep命令详解 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟gr

Linux grep命令详解[备份]

linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 2.格式grep [options] 3.主要参数[options]主要参数:-c:只输出匹配行的计数.-I:不区分大 小写(只适用于单字符).-h:查询多文件时不显示文件名.-l:查询多文件时只输出包含匹配字符的文件名.-n:显示

Linux grep 命令中的正则表达式详解

在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expressions),而且 GNU grep 在所有的 Linux 系统中都是默认有的.Grep 命令被用于搜索定位存储在您服务器或工作站上的任何信息. 正则表达式 正则表达式就是用于匹配每行输入的一种模式,模式是指一串字符序列.下面是范例: ^w1 w1|w2 [^ ] grep 正则表达式示例 在 /e

Linux grep命令用法以及正则表达式

1.grep命令和正则表达式的简介 (1).grep(Global search REgular expression and Print out the line),即全局搜索正则表达式并打印出匹配的行,它是Linux系统中一个强大的文本搜索工具,它根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行: (2).正则表达式是由一类字符书写的模式,其中有些字符不表示符的字面意义,而是表示控制或通配的功能 2.grep命令的基本语法格式 grep [OPTIO

linux grep命令使用的详解

1.grep简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看

Linux Linux grep命令用法以及正则表达

一.grep命令和正则表达式的简介 1.grep(Global search REgular expression and Print out the line),即全局搜索正则表达式并打印出匹配的行,它是Linux系统中一个强大的文本搜索工具,它根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行: 2.正则表达式是由一类字符书写的模式,其中有些字符不表示符的字面意义,而是表示控制或通配的功能 二.grep命令的基本语法格式 grep [OPTION]..

【转】linux grep命令详解

简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也

Linux &nbsp; &nbsp; grep命令,正则表达式

grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression and Print out the line;全面查找正则表达式并将匹配到的行显示出来; 正则表达式 正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用;许多程序设计语言都支持利用正则表达式进行字符串操作; 主流的正则引擎又分为三类:DFA;传统型NFA;POSIX NFA; DFA

Linux grep 命令

grep命令是类Unix系统中一种强大的文本搜索工具,全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 命令格式为: grep [option] pattern file 常用option有: -i --ignore-case #忽略字符大小写的差别. -n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号. -r --recursive #此参数的效果和指定“-d recurse”参数相同. -