扩展阅读
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux c下利用srand和rand函数生成随机字符串
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux下c基于openssl生成MD5的函数
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • linux僵尸(zombie)进程介绍及清除
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • Windows2000和Linux双操作系统,Linux系统有问题,我直接把Linux分区删除后,Windows2000进不去了,怎么办???
  •  
    当前位置:  操作系统>Linux

    linux下grep命令实现查找多个关键字(与关系和或关系)

     
        发布时间:2014-9-11  


        本文导语:  Linux下grep命令简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Uni...

         Linuxgrep命令简介

         grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrepfgrep。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。我们利用这些返回值就可进行一些自动化文本处理工作。


        Linux下grep正则表达式元字符集(基本集)

    ^

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


    $

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


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

    *

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

    []

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

    [^]

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

    (..)

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

    <

    锚定单词的开始,如:'

    >

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

    x{m}

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

    x{m,}

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

    x{m,n}

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

    w

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

    W

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

    b

    单词锁定符,如: 'bgrepb'只匹配grep。


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


    +

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

    ?

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


    a|b|c

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


    ()

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


    x{m},x{m,},x{m,n}

    作用同x{m},x{m,},x{m,n}



        linux下grep命令实现查找多个关键字或关系举例说明如下:


    文件里有的行含有'aaaaa', 有的含有'bbbbbb', 怎样能把含有这两个字符串的所有行都挑出来,而且不打乱它们出现的次序?

    比如

    文件:

    2

    aaaaaaaccccccc

    aaaaaaeeeeeee

    111111111

    bbbbbbbbccccc

    3

    aaaaaaacccccccc

    bbbbbbbeeee


    最后要得到:

    aaaaaaaccccccc

    aaaaaaeeeeeee

    bbbbbbbbccccc

    aaaaaaacccccccc

    bbbbbbbeeee


    linux下grep命令实现:   grep -E   'aaaaa|bbbbbb'


    linux下grep命令实现查找多个关键字与关系举例说明如下:


    如一个文本内容为: 

    jin tian tian qi hao qing lang .

    ming tian tian qi hao qing lang .

    hou tian tian qi hao qing lang .

    jin tian tian qi hao qing lang .

    我要用grep查找包含"jin"和"qi"的记录,怎么查?


    linux下grep命令实现:  grep "jin" filename | grep "qi"



    linux下grep命令实现查找其它例子:


    $ ls -l | grep '^a'

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

    $ grep 'test' d*

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

    $ grep 'test' aa bb cc

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

    $ grep '[a-z]{5}' aa

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

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


    相关文章推荐:
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • linux中有没有什么命令能列出所有linux的内部命令
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 有没有在windows下模拟Linux命令系统的软件! 我想学习Linux的基本命令!
  • Linux下chmod命令详细介绍及用法举例
  • linux 的命令操作和 windows的命令提示行有什么不同呢?? 为什么windows一般都不用命令提示行操作呢??
  • linux bash shell命令:grep文本搜索工具简介
  • linux系统安装测试命令oslevel,lsdev命令不识别
  • 论坛 iis7站长之家
  • 在Linux下使用ftp命令,被提示命令没有找到
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • linux中的用户,用什么命令修改密码(要一条命令做到)???
  • linux下free命令显示的内存使用情况分析
  • linux命令行下使用curl命令查看自己机器的外网ip
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • linux 中查看过去运行的命令的命令是什么?
  • Linux下curl的下载,安装以及curl命令的详细参数,用法介绍
  • linux命令字符ls-al提示该命令不存在
  • linux下不使用sudo命令执行docker的操作步骤
  • linux下执行命令为什么要在命令前加./


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3