Linux     grep命令,正则表达式

grep命令及正则表达式

grep命令

grep , egrep , fgrep

grep,sed,awk 文本处理三剑客

grep: Global search REgular expression and Print out the line;全面查找正则表达式并将匹配到的行显示出来;

正则表达式

正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用;许多程序设计语言都支持利用正则表达式进行字符串操作;

主流的正则引擎又分为三类:DFA;传统型NFA;POSIX NFA;

DFA: awk,egrep,flex,MySQL,Procmail等;

传统型NFA: GUN Emacs,java,ergp,less,.NET语言,PCRE library,Perl,PHP,Python,Ruby,sed,vi,vim;

POSIX NFA: mawk,Mortice Kern System‘ utilities,GUN Emacs(使用时可以明确指定);

DFA/NFA混合: GUN awk,GUN grep/egrep,Tcl;

grep用法:

grep:外部命令

功能:从源数据中显示出被模式匹配到的行;

注:grep默认工作模式为贪婪模式,也就是说,每次grep进行模式匹配都是按照尽可能多的去完成匹配的标准进行的;

grep [OPTIONS] PATTERN [FILE...]

grep [OPTIONS] [-e PATTERN] [-f FILE] [FILE]

常用选项:

-A NUM,--after-context=NUM: 被模式匹配到的行以及其后#行;其后若没有,则不显示;不能同-o选项一同使用;

-B NUM,-before-context=NUM: 被模式匹配到的行以及其前#行;其后若没有,则不显示;不能同-o选项一同使用;

-C NUM,--context=NUM: 被模式匹配到的行以及其前后各#行;其前后若没有,则不显示;不能同-o选项一同使用;

--color=auto: 对匹配到的文本着色显示;

-e PATTERN,--regrep=PATTREN: 实现以逻辑或的关系完成多个模式的匹配,每个-e选项只能带一个模式作为参数;

-E,--extended-regexp: 扩展正则表达式开关,能够让grep使用扩展正则表达式,同egrep;

-i,--ignore-case: 忽略字符大小写;

-n,--line-number: 显示匹配到的行并在其前加行号(文件中的行号)

-o,--only-matching: 仅显示匹配到的字符串;

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

-v,--invert-match: 显示没有被匹配到的行;

-w,-Word-regexp: 整行匹配整个单词;

退出状态:

若成功查找到被选中的行,状态返回值为0;否则则为1;

基本正则表达式元字符:

1.字符匹配:

. : 匹配任意单个字符;

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

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

[:digit:]: 表示所有十进制数字,相当于[0-9];

[:lower:]: 表示所有小写的字母,相当于[a-z];

[:upper:]: 表示所有大写的字母,相当于[A-Z];

[:alpha:]: 表示所有字母,包括大写和小写;

[:alnum:]: 表示包括所有大小写字母及十进制数字;

[:space:]: 表示所有空白字符;

[:punct:]: 表示所有特殊字符;

2.匹配次数(用在要指定其出现的次数的字符后面):

*: 匹配其前面字符任意次;

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

\?: 匹配其前面字符0或1次;

\+: 匹配其前面字符1或多次;

\{m\}: 匹配其前面字符m次;

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

\{0,n\}: 至多n次 ; \{m,0\}: 至少m次;

3.位置锚定:

^: 行首锚定;用于模式最左侧;

$: 行位锚定;用于模式最右侧;

^$: 空白行;

^[[:space:]]*$: 空行或包含空白字符的行;

\<或\b: 词首锚定;

\>或\b: 词尾锚定;

\<PATTERN\>: 匹配完整单词;

4.分组及引用:

\(\):将一个或多个字符捆绑在一起,当做一个整体进行处理; 例:\(xy\)*ab

Note: 分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:

\1: 模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;

\2: ...第二个....

\3: ...

egrep:

支持扩展的正则表达式实现类似于grep文本过滤功能: grep -E

egrep [OPTIONS] PATTREN [FILE...]

选项:

-i,-o,-v,-q,-A,-B,-C

-G:支持基本正则表达式;相当于grep;

扩展正则表达式的元字符:

除了在匹配次数中不必使用转义符"\"之外,其它与基本正则表达式的元字符一样;

fgrep:

不支持正则表达式元字符;当无需要用到元字符去编写模式时,使用fgrep会更好;

应用实例:

1.取出/etc/sysconfig/network-scripts/ifcfg-eno16777736这个文件的基名

~]# echo /etc/sysconfig/network-scripts/ifcfg-eno16777736 | grep -o "[^\/]\+\/\?$"

2.找出/etc/rc.d/init.d/functions文件中某单词(包括下划线)后面跟一个小括号的行

~]# grep -o ".*_*.*()" /etc/init.d/functions

3.显示/etc/passwd文件中用户名与该用户的默认shell名相同的用户账户信息

~]# grep -E "(\<.+\>).*\1$" /etc/passwd

4.显示利用ldd命令查看到的ls命令所使用的动态库文件的绝对路径

~]# ldd /bin/ls | egrep -o "/.*lib(64)?/[^[:space:]]+"

5.grep还可以从多个文件中查找匹配字符,如:

~]# grep ‘ro‘ ./*

时间: 2024-10-01 13:23:26

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 grep 命令 Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本.2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本.3.fgrep : 快速grep,这个版本匹配固定字

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和正则表达式

虽然正则表达式经常都在用,但是很少能够静下心来仔细的总结一下.最近看了一个台湾人的网站叫做鸟哥Linux私房菜,关于正则表达式的描述挺详细的.在此,我进行一下总结,如果想仔细的学习正则表达式,请访问鸟哥Linux私房菜,台湾同胞的网站是繁体中文的,需要点儿耐心. 正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 功能:输入文件的每一行中查找字符串. 基本用法: grep [-acinv] [--color=au

【转】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,它们把所有的字母都看作单词,也