`
wsql
  • 浏览: 11801625 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Linux Grep 命令说明

 
阅读更多

一. 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使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

  grep在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

  grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。利用这些返回值就可进行一些自动化的文本处理工作。

二.grep正则表达式元字符集(基本集)

(1)^:锚定行的开始如:'^grep'匹配所有以grep开头的行。

(2)$:锚定行的结束如:'grep$'匹配所有以grep结尾的行。

(3). :匹配一个非换行符的字符如:'gr.p'匹配gr后接一个任意字符,然后是p。

(4)*:匹配零个或多个先前字符如:'*grep'匹配所有一个或多个空格后紧跟grep的行。.*一起用代表任意字符。

(5)[]:匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

(6)[^]:匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

(7)/(../):标记匹配字符,如'/(love/)',love被标记为1。

(8)/<:锚定单词的开始,如:'//>

  锚定单词的结束,如'grep/>'匹配包含以grep结尾的单词的行。

(9)x/{m/}:重复字符x,m次,如:'0/{5/}'匹配包含5个0的行。

(10)x/{m,/}:重复字符x,至少m次,如:'o/{5,/}'匹配至少有5个o的行。

(11)x/{m,n/}:重复字符x,至少m次,不多于n次,如:'o/{5,10/}'匹配5--10个o的行。

(12)/w:匹配文字和数字字符,也就是[A-Za-z0-9],如:'G/w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

(13)/W:/w的反置形式,匹配一个或多个非单词字符,如点号句号等。

(14)/b:单词锁定符,如: '/bgrepb/'只匹配grep。

三.用于egrep和grep -E的元字符扩展集

(1)+:匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

(2)?:匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

(3)a|b|c:匹配a或b或c。如:grep|sed匹配grep或sed

(4)():分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

(5)x{m},x{m,},x{m,n}:作用同x/{m/},x/{m,/},x/{m,n/}

四. POSIX字符类

  为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[: alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

(1)[:alnum:]文字数字字符

(2)[:alpha:]文字字符

(3)[:digit:]数字字符

(4)[:graph:]非空字符(非空格、控制字符)

(5)[:lower:]小写字符

(6)[:cntrl:]控制字符

(7)[:print:]非空字符(包括空格)

(8)[:punct:]标点符号

(9)[:space:]所有空白字符(新行,空格,制表符)

(10)[:upper:]大写字符

(11)[:xdigit:]十六进制数字(0-9,a-f,A-F)

五. Grep命令选项

(1)-?:同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

(2)-b,--byte-offset:打印匹配行前面打印该行所在的块号码。

(3)-c,--count:只打印匹配的行数,不显示匹配的内容。

(4)-f File,--file=File:从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。

(5)-h,--no-filename:当搜索多个文件时,不显示匹配文件名前缀。

(6)-i,--ignore-case:忽略大小写差别。

(7)-q,--quiet:取消显示,只返回退出状态。0则表示找到了匹配的行。

(8)-l,--files-with-matches: 打印匹配模板的文件清单。

(9)-L,--files-without-match:打印不匹配模板的文件清单。

(10)-n,--line-number:在匹配的行前面打印行号。

(11)-s,--silent:不显示关于不存在或者无法读取文件的错误信息。

(12)-v,--revert-match:反检索,只显示不匹配的行。

(13)-w,--word-regexp:如果被/<和/>引用,就把表达式做为一个单词搜索。

(14)-V,--version: 显示软件版本信息。

六.实例

(1)$ ls -l | grep '^a'

  通过管道过滤ls -l输出的内容,只显示以a开头的行。

(2)$ grep 'test' d*

  显示所有以d开头的文件中包含test的行。

(3)$ grep 'test' aa bb cc

  显示在aa,bb,cc文件中匹配test的行。

(4)$ grep '[a-z]/{5/}' aa

  显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

(5)$ grep 'w/(es/)t.*/1' aa

  如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果用egrep或grep -E,就不用"/"号进行转义,直接写成'w(es)t.*/1'就可以了。

(6)cat /etc/oratab |grep -v ^#|grep -v ^$|grep -v '^;'

过滤注释

[root@rac1 ~]# cat /etc/oratab

#

# This file is used by ORACLE utilities.It is created by root.sh

# and updated by the Database Configuration Assistant when creating

# a database.

# A colon, ':', is used as the field terminator.A new line terminates

# the entry.Lines beginning with a pound sign, '#', are comments.

#

# Entries are of the form:

#$ORACLE_SID:$ORACLE_HOME:<N|Y>:

#

# The first and second fields are the system identifier and home

# directory of the database respectively.The third filed indicates

# to the dbstart utility that the database should , "Y", or should not,

# "N", be brought up at system boot time.

#

# Multiple entries with the same $ORACLE_SID are not allowed.

#

+ASM1:/u01/app/oracle/product/10.2.0/db_1:N

rac:/u01/app/oracle/product/10.2.0/db_1:N

过滤之后:

[root@rac1 ~]# cat /etc/oratab |grep -v ^#|grep -v ^$|grep -v '^;'

+ASM1:/u01/app/oracle/product/10.2.0/db_1:N

rac:/u01/app/oracle/product/10.2.0/db_1:N

整理自网络

---------------------------------------------------------------------------------------------------

分享到:
评论

相关推荐

    Linux Grep命令的详细使用方法

    关于grep命令的使用方法,以及该命令的参数,同时还有一些例子说明

    grep命令调研文档

    Grep (global search regular expression(RE) and print ... Grep可用于shell脚本,因为Grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则...

    Linux系统指令:文件内容查询工具Grep

    linux使用GNU版本的Grep。它功能更强,可以通过-G、-E、-F命令行选项来使用eGrep和fGrep的功能。Grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串...

    第二模块:Linux核心命令grep awk sed.docx

    以下是一些常见的Linux核心命令及其简要说明: 1. **ls**:列出目录中的文件和子目录。常用参数有`-l`(长格式显示,包括文件权限、所有者、大小等)、`-a`(显示所有文件,包括隐藏文件)等。 2. **cd**:改变当前...

    Linux查找文件中的字符串命令 grep -nr 'archermind'

    (1)字符串参数最好采用是双引号括,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串..." myfile匹配myfile中含有任意字符的行 (3)grep命令类名 [[:upper:]] 表示[A-Z] [[:alnum:]] 表示[0-9a-zA-Z]

    常用 Linux 命令的基本使用.docx

    1.2 ls 命令说明 1.3 ls 常用选项 1.4 ls 通配符的使用 02. 切换目录 2.1 cd 2.2 相对路径和绝对路径 03. 创建和删除操作 3.1 touch 3.2 mkdir 3.3 rm 04. 拷贝和移动文件 4.1 tree 4.2 cp 4.3 mv 5.1...

    linux grep正则表达式与grep用法详解

    grep命令 功能:输入文件的每一行中查找字符串。 基本用法: grep [-acinv] [–color=auto] [-A n] [-B n] ‘搜寻字符串’ 文件名 参数说明: -a:将二进制文档以文本方式处理 -c:显示匹配次数 -i:忽略大小写差异 ...

    cmd操作命令和linux命令大全收集

    CMD命令:开始-&gt;运行-&gt;键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    Linux egrep命令用法详解

    Linux egrep命令 Linux egrep命令用于在文件内查找指定的字符串。 egrep执行效果与”grep-E”相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。 egrep是用extended regular expression...

    Linux命令大全(CHM格式离线版)

    Linux命令大全(CHM格式离线版) Linux命令大全(修改版) 进行重新编译的说明 文件传输 bye ftp ftpcount ftpshut ftpwho ncftp tftp uucico uucp uupick uuto 备份压缩 ar bunzip2 bzip2 bzip2recover compress cpio ...

    Linux命令学习 shell pdf格式

    第一部分 shell 第一章 文件安全与权限 第二章 使用find和xargs 第三章 后台执行命令 第四章 文件名置换 第五章 shell输入与输出 第六章 命令执行顺序 第二部分 文本过滤 ...另外附有Linux命令说明(doc版,32页)

    入门学习Linux常用必会60个命令实例详解doc/txt

    4.命令说明 shutdown 命令可以安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux系统,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使...

    文本三剑客之grep及正则表达式 -.pdf

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

    Linux rgrep命令用法详解

    Linux rgrep命令 Linux rgrep命令用于递归查找文件里符合条件的字符串。 rgrep指令的功能和grep指令类似,可查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设rgrep指令会把含有...

    我的经常使用linux小命令

    这里并非系统具体介绍每个Linux命令,不过记录本人在平时工作中经经常使用到的一些比?基础的命令及相关的?数,同一时候用了一些简单的样例来说明这些命令的用途,以及怎样用多种...  2、grep命令  当须要找出匹配指

    Linux netstat命令用法详解

    Linux netstat命令 Linux netstat命令用于显示网络状态。 利用netstat指令可让你得知整个Linux系统的网络情况。 语法netstat [-acCeFghilMnNoprstuvVwx][-A][--ip] 参数说明: -a或–all 显示所有连线中的Socket。 -...

    linux上xml

    1. locate xml|grep lib|grep so 可以看到一些xml的解码库, 当然上网找更容易 2. 选定了libxml2.so, 然后用命令 rpm -qf /usr/lib/libxml2.so, 看它属于哪个rpm包, 结果是它属于libxml2-devel-2.6.14-2包 3. 然后再...

    linux命令行小结

    需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。 在开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptables 文件,添加以下内容: -A RH-Firewall-1-INPUT -m state -...

    LINUX操作系统(电子教案,参考答案)

    Linux在这几年中迅速地发展,Turbo Linux宣布该公司已经开始盈利了,这说明了Linux正在逐渐大众化。在未来的几年中,Linux在各行各业中的应用将遍地开花,能熟练操作Linux将是每一个系统管理员所需掌握的基本技能。 ...

Global site tag (gtag.js) - Google Analytics