grep 订阅
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。 [1] 展开全文
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。 [1]
信息
最新版本
3.0 [3]
原作者
Ken Thompson [2]
公开时间
1974 [4]
外文名
Globally search a Regular Expression and Print
GREP基本简介
egrep和fgrep的命令只跟grep有很小不同。egrep和fgrep都是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。Grep命令中允许指定的串语句是一个规则表达式,这是一种允许使用某些特殊键盘字符的指定字符串的方法,这种方法中的特殊键盘字符可以用于代表其他字符也可以进一步定义模式匹配工作方式。例如:grep ".*hood" essay1。该命令将在文件essay1中搜索,显示出包含带有字符串hood的字的每一行。命令行中的点表示的是hood之前可以有任意字符,星号指的是在字符串之前点号所表示的任意字符可以有任意个(其中的双引号是可有可无的,但是当语句中包含短语或者空格时就必须加双引号)。 [5] 
收起全文
精华内容
参与话题
问答
  • grep命令

    千次阅读 2018-05-29 09:37:50
    grep命令

    grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
    
    grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
    

    一、语法格式:

    grep 选项 参数 文件
    Usage: grep [OPTION]... PATTERN [FILE]...
    

    二、常用命令参数

    -a  不要忽略二进制数据。
    -A  <显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容
    -b  在显示符合范本样式的那一行之外,并显示该行之前的内容
    -c  计算符合范本样式的列数
    -C <显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
    -d <进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作
    -e <范本样式> 匹配多个样式
    -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
    -f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
    -F 将范本样式视为固定字符串的列表
    -G 将范本样式视为普通的表示法来使用
    -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称
    -H 在显示符合范本样式的那一列之前,标示该列的文件名称
    -i 忽略字符大小写
    -l 列出文件内容符合指定的范本样式的文件名称
    -L 列出文件内容不符合指定的范本样式的文件名称
    -n 在显示符合范本样式的那一列之前,标示出该列的编号
    -q 不显示任何信息
    -R/-r 递归查询
    -s 不显示错误信息
    -v 反转查找
    -w 正则匹配只包含完全字符的内容,如roo只匹配roo,不匹配root,roott等
    -x 只显示全列符合的列
    -y 此参数效果跟“-i”相同
    -o 只输出文件中匹配到的部分
    

    三、grep正则表达式

    ^         如:^zhang,表示匹配所有以zhang开头的行。
    $         如:zhang$,表示匹配所有以zhang结尾的行。
    .         匹配一个除换行符之外的字符,如:zha.g,匹配zha后接一个任意字符除换行符之外,然后是g。
    *         匹配零个或多个先前字符,如:*zhang,匹配所有一个或多个字符后面紧跟grep的行。
    .*        匹配任意一个字符出现零次或多次,结合在一起通常表示任意字符
    []        匹配一个指定范围内的字符,如:[zh]ang,匹配zang和hang。
    [^]       匹配一个指定范围内的字符,如:[^A-DG-Z],匹配不包含A-D和G-Z字母开头的行        
    \(..\)    标记匹配字符,如'\(love\)',love被标记为1。 
    \<        锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
    \>        锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
    \<...\>   匹配只包含括号里面的单词的行,如匹配\<zhangjunchao\>,zhangjunchao110这种不匹配。
    x\{m\}    重复字符x,m次,如:'o\{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],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   
    \W        \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
    \b        单词锁定符,如: '\bgrep\b'只匹配grep。  
    

    四、grep命令常见用法

    注:此处所有的grep命令用法我将以a.txt文件里面的内容作为演示的参考

    [root@iZwz9bhan5nqzh979qokrkZ ~]# cat /etc/passwd 
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    
    4.1 过滤关键字行
    root@iZwz9bhan5nqzh979qokrkZ ~]# grep root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    
    4.2 过滤关键字行显示关键字在文本的行数
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -n root /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    10:operator:x:11:0:operator:/root:/sbin/nologin
    
    4.3 带颜色显示关键字在文本的行数字
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -n root --color /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    10:operator:x:11:0:operator:/root:/sbin/nologin
    
    4.4 不区分大小写
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -i root --color /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    
    4.5 取反
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -v root --color /etc/passwd
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    	
    4.6 显示带关键字的行数
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -c root /etc/passwd
    2
    
    4.7 显示关键字行和后面的2行(总共3行)  After
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -A 2 root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    --
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    
    4.8  显示关键字行和前面的2行  Before
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -B 2 root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    --
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    
    4.9 匹配IP地址
    [root@iZwz9bhan5nqzh979qokrkZ ~]# ifconfig eth0 | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" 
            inet 172.18.108.103  netmask 255.255.240.0  broadcast 172.18.111.255
    [root@iZwz9bhan5nqzh979qokrkZ ~]#  ifconfig eth0 | grep -E "([0-9]{1,3}\.){3}[0-9]"        
            inet 172.18.108.103  netmask 255.255.240.0  broadcast 172.18.111.255   
    注:.有特殊意义,所以需要转义
    
    4.10 将a.txt文件中不包含400的行输入到b.txt文件中
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep '.' a.txt  | grep -Ev "400"  > b.txt
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep '.' a.txt  | grep -Ev "(400|502|110|390)"  > b.txt
    注:多个条件需要用到-E参数
    
    4.11 递归查找
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -R -n --color "Hostname" /usr/local/zabbix
    136:### Option: Hostname
    139:#	Value is acquired from HostnameItem if undefined.
    143:# Hostname=
    145:Hostname=host-39-108-217-12
    
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep -E -R -n --color "(Hostname|Server)" /usr/local/zabbix
    82:### Option: Server
    87:#	Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.domain
    91:# Server=
    93:Server=39.108.217.12
    122:### Option: ServerActive
    128:#	Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
    132:# ServerActive=
    134:# ServerActive=127.0.0.1
    136:### Option: Hostname
    139:#	Value is acquired from HostnameItem if undefined.
    143:# Hostname=
    
    注:-n:打印行号  --color:带颜色  -R:递归查询  -E:支持扩展正则
    	
    4.12 选项 -e:匹配多个匹配样式 -o:只输出匹配到的内容
    [root@iZwz9bhan5nqzh979qokrkZ ~]# echo this is a text line | grep -e "is" -e "line" -o
    is
    is
    line
    
    4.13 搜索多个文件并查找匹配文本在哪些文件中:
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep 'zhangjunchao' /root -lr
    /root/b.txt
    /root/a.txt
    
    4.14 在grep搜索结果中包括或者排除指定文件:
    
    只在目录中所有的.php和.html文件中递归搜索字符"main()"
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep "main()" . -r --include *.{php,html}
    
    在搜索结果中排除所有README文件
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep "main()" . -r --exclude "README"
    
    在搜索结果中排除filelist文件列表里的文件
    [root@iZwz9bhan5nqzh979qokrkZ ~]# grep "main()" . -r --exclude-from filelist
    

    五、补充:grep使用多个查询条件?

    1. \ | 符号法
    [root@mail ~]# grep 'usrquota\ |grpquota' /etc/fstab
    
    2. 使用多个-e参数
    netstat -an | grep -e EST -e WAIT
    并列使用多个-e参数可以实现或条件
    	
    3. 使用扩展-E
    netstat -an | grep -E "ESTABLISHED|WAIT"
    此处的 -E 是大写 ,匹配条件一定要加 引号
    

    六、grep -q用法
    grep -q用于if逻辑判断
    https://blog.csdn.net/sim120/article/details/10151327

    总结:grep命令其实是一个很强大的命令,工作中经常会用到,所以有必要总结一下,当然gerp命令的用法肯定不只是这么多,还有很多其他的用法,在这里就不一一列举了,这里展示的这些只是我工作中用到的一些,大家就各自脑补吧!

    展开全文
  • grep 命令

    千次阅读 2014-01-16 16:20:42
    一、grep 命令的一般格式  grep [option] pattern file  用于查找文件中字符串 二、grep option选项,如下图   三、pattern  为正则表达式,正则表达式分为普通字符与特殊字符(元字符),元字符分为基本的...

    一、grep 命令的一般格式

            grep   [option]    pattern   file

            用于查找文件中字符串


    二、grep option选项,如下图

            


    三、pattern

            为正则表达式,正则表达式分为普通字符与特殊字符(元字符),元字符分为基本的元字符集和扩展元字符集

            1、基本的元字符集

          

           2、扩展元字符集

            

    四、file

            可以是目录或者具体文件名,例如*.txt,.表示当前目录下,/etc表示etc目录下


    五、举例

            grep ^public t1.txt                  在t1.txt中找到以public开始的行

            grep public$ t1.txt                  在t1.txt中找到以public结尾的行

            grep -n ^$ t1.txt                     在t1.txt中找到空行

            grep -n ^.$ t1.txt                    在t1.txt中找只包含一个字符的字符串

            grep -n \<public t1.txt            在t1.txt中找到以<public开始的字符串 ,传递给shell为\<public,传递给grep为<public

            grep -n ‘\<public’ t1.txt           在t1.txt中找到以public开始的字符串 

            grep -n ‘public\>’ t1.txt           在t1.txt中找到以public结尾的字符串

            grep -n “\\\\” t1.txt                  在t1.txt中找到包含\\的字符串

            grep -n ‘\\’ t1.txt                     在t1.txt中找到包含\\的字符串


            grep -E go+d t1.txt                      在t1.txt中找到包含go(一个或者多个o)d的字符串

            grep -En 10\{2,4\}A t1.txt             在t1.txt中找到包含1(2到4个0)A的字符串

            grep -En '11A|B' t1.txt                  在t1.txt中找到包含11(A或者B)的字符串

            grep -En net\(works\)* t1.txt         在t1.txt中找到包含net(0个或多个works)的字符串


            grep -rn telnet /etc                        在/etc目录下递归查找telnet

            grep -rni mSamples .                    在当前目录下递归查找mSamples

            grep -ni mSamples *.txt                在*.txt递归查找mSamples


    六、说明

            grep -n ‘\\’ t1.txt  ‘ ‘ 传递给grep为\\

            grep -n  \\  t1.txt     传递给shell为\\,传递给grep为\

            grep -n "\\\\" t1.txt   ""此时会传递给shell为\\\\,传递给grep为\\ (比较特殊)

            grep -En 10\{2,4\}A t1.txt 或者 grep -En ‘10{2,4}A‘  t1.txt 传递给shell为10\{2,4\}A,传递给grep为10{2,4}A 

            r递归调用对于目录而言

            E对于patten 使用了扩展元字符集

            l 只列出包含字符串的文件

    展开全文
  • Linux grep 命令

    千次阅读 2015-07-13 10:18:17
    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 grep的工作...

    2015-07-13 创建

    1、概述

      使用正则表达式搜索文本,并把匹 配的行打印出来。

    2、命令格式

      grep [OPTIONS] PATTERN [FILE...]

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

    3、常用命令参数

      匹配选择:

        -E, --extended-regexp    使用扩展正则表达式 【不用使用 \ 了】

        -F, --fixed-strings    相当于fgrep 不支持正则表达式

      匹配控制:

        -e PATTERN, --regexp=PATTERN    这可以用于多个搜索模式指定,或用连字符(-)开始保护模式。

    [root@mode-6 day03]# cat grepTest2
    # Default runlevel. The runlevels used are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    id:3:initdefault:
    [root@mode-6 day03]# grep -e 'multiuser' grepTest2
    #   3 - Full multiuser mode
    [root@mode-6 day03]# grep -e 'multiuser' -e 'initdefault' grepTest2      # 多个正则匹配
    #   0 - halt (Do NOT set initdefault to this)
    #   3 - Full multiuser mode
    #   6 - reboot (Do NOT set initdefault to this)
    id:3:initdefault:

        -i, --ignore-case      忽略大小写

        -x, --line-regexp    整行匹配

        -y    "-i" 的同义词

        -w, --word-regexp  单词匹配

        -v, --invert-match    显示没有被模式匹配到的行,匹配的行不显示

    [oldboy@moban ~]$ grep --color -v "nologin" /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    oldboy:x:500:500::/home/oldboy:/bin/bash
    hive:x:501:501::/home/hive:/bin/bash
    kkk:x:502:502::/home/kkk:/bin/bash
      通用输出控制:

        -c, --count    得到匹配行数。示例:

    [oldboy@moban ~]$ grep -c -v "nologin" /etc/passwd
    7
          --color[=WHEN], --colour[=WHEN]    匹配处,高亮显示【默认红色字体】。示例:

    [oldboy@moban ~]$ grep --color "nologin" /etc/passwd

        -L, --files-without-match    查看那些文件没有被匹配。【通常针对多个文件匹配时】

        -l, --files-with-matches    查看那些文件是由匹配的。【通常针对多个文件匹配时】【小写字母 L】


         -m NUM, --max-count=NUM    匹配多少行;如果NUM超过匹配行数,那么显示所有匹配行。示例:


        -o, --only-matching    只显示被模式匹配到的字符串。示例:


      输出行前缀控制:

        -b, --byte-offset    在显示符合样式的那一行之前,标示出该行第0个字符的偏移。示例:

     

        -H, --with-filename    在显示符合样式的那一行之前,显示该行所属的文件名称


        -n, --line-number    显示匹配行所在的行号。

      上下文控制:
        -A NUM, --after-context=NUM    显示匹配行,和之后的NUM行数据。示例:


        -B NUM, --before-context=NUM    显示匹配行,和之前的NUM行数据。

        -C NUM, -NUM, --context=NUM    显示匹配行,和之前以及之后NUM行数据。


    4、正则表达式

      基本正则表达式:         默认匹配次数:贪婪模式,尽可能多的去匹配 

        1)元字符:

        .    匹配任意单个字符

        []     匹配指定范围内的任意单个字符 [0-9],[a-z],[abc]
        [^]     匹配指定范围外的任意单个字符

        2)字符集合:

        纯数字 [[:digit:]]或[0-9] 

        小写字母 [[:lower:]]或[a-z]     大写字母 [[:upper:]]或[A-Z] 

        大小写字母 [[:alpha:]]或[a-zA-Z]     数字加字母 [[:alnum:]]或[0-9a-zA-Z] 

        空白字符 [[:space:]]      非空白字符[^[:space:]]

        标点符号 [[:punct:]] 

        【可以通过man tr查询这些字符集合】            

        3)匹配次数(贪婪模式):

        *    匹配其前面的字符任意次 【0次或多次】

        .*    任意长度的任意字符

        \.    表示.本身   \逃逸符

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

        x\{m\}    匹配其前面的字符“x”m次(精确匹配) 

        x\{m,\}    匹配其前面的字符“x”至少m次    【\{1,\} 至少一次,多了不限】

        x\{m,n\}:匹配其前面的字符“x”至少m次,至多n次    【\{0,3\} 最多3次,少了不限】

        4)位置锚定:

        ^     锚定行首,此字符后面的任意内容必须出现在行首   【# grep '^r..t' /etc/passwd】

        $     锚定行尾,此字符前面的任意内容必须出现在行尾【# grep 'login$' /etc/passwd】

        ^$    空白行【# grep '^$' /etc/inittab 】

        \<或\b     锚定词首,其后面的任意字符必须作为"单词的"首部出现       【# grep "\<root" test2.txt】

        \>或\b     锚定词尾,其前面的任意字符必须作为"单词的"尾部出现【# grep "root\>" test2.txt】

        \<xxx\>或\bxxx\b     锚定单词例如 \<root\>

        5)分组:   \(\)   后向引用

        \(ab\)* # grep "\(b\)*" test.txt

        \1    引用第一个左括号以及与之对应的右括号所包括的所有内容

        \2    引用第二个左括号以及与之对应的右括号所包括的所有内容

        \3    引用第三个左括号以及与之对应的右括号所包括的所有内容


      扩展正则表达式:

        +     匹配其前面的字符至少1次       类似:\{1,\}

        ?     匹配紧挨在其前面的字符0次或1次   类似:\?    【不需要下斜线 \?】

        {m,n}     匹配前面字符至少m次至多n次 {1,}表示1至无限 {0,3}表示0-3    【不需要下斜线 \{\}】

        ()    分组    \1, \2, \3, ...     【不需要下斜线 \(\)】

        |      或者   【C|cat:    C或cat # grep -E "C|cat" test4.txt 】   (C|c)at:  Cat或cat# grep -E "(C|c)at" test4.txt

       注意:对于 \<或\b      \>或\b  使用扩展正则也不能去掉 \

    ******* 注意正则表达式和扩展正则表达式的区别

    5、常用示例

      示例1:

        1、以数字结尾

    # grep"[[:digit:]]$" /etc/rc.sysinit
    # grep"[0-9]$" /etc/rc.sysinit

        2、以数字结尾,前面有一个或多个空白字符

    # grep"[[:space:]][0-9]$" /etc/rc.sysinit
    # grep"[[:space:]]\{1,\}[0-9]$" /etc/rc.sysinit
    # grep-E "[[:space:]]+[0-9]$" /etc/rc.sysinit

        3、以数字结尾,之前的内容中有一个空格或多个空格

    # grep"[[:space:]]\{1,\}.*[0-9]$" /etc/rc.sysinit
    # grep-E "[[:space:]]+.*[0-9]$" /etc/rc.sysinit  

      示例2:

        1、有如下文本内容 test1.txt

    He love his lover.

    She like her lover.

    He like his liker.

    She love her liker.

    She like he.

    【请注意他们的不同信息】

    # grep "l..e" test1.txt
    # grep "l..e.*l..e" test1.txt
    # grep "\(l..e\).*\1" test1.txt 【或者:grep -E"(l..e).*\1" test1.txt】

        2、对文件/etc/rc.sysinit 文件按照如下规则匹配:

            a)结尾是数字    b)结尾的数字在该行中的其他地方有显示

        如: wrw35wetgerh3 

    # grep-E "([0-9]).*\1$" /etc/rc.sysinit


      示例3:

        1、显示/proc/meminfo文件中以不区分大小的s开头的行.

    # grep-i "^s" /proc/meminfo
    # grep-E "^(s|S)" /proc/meminfo
    # grep-E "^[s|S]" /proc/meminfo


        2、显示/etc/passwd中以nologin结尾的行.

    # grep"nologin$" /etc/passwd


        3、取出默认shell为/sbin/nologin的用户列表。

    # grep"/sbin/nologin$" /etc/passwd | cut -d: -f1

        4、取出默认shell为bash,且其用户ID号最大用户的用户名和用户编号。

    # grep"bash$" /etc/passwd | sort -t: -k3 -nr | head -1 | cut -d: -f1,3

        5、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行.

    # grep"^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/inittab
    # grep-E '^#[[:space:]]+[^[:space:]]+' /etc/inittab

        6、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行.

    # grep-E "(:)[0-9]\1" /etc/inittab
    # grep":[0-9]:" /etc/inittab
    # grep"\(:[0-9]:\)" /etc/inittab

        7、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行.

    # grep"^[[:space:]]\{1,\}" /boot/grub/grub.conf
    # grep-E "^[[:space:]]+" /boot/grub/grub.conf

        8、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行.

    # grep"^\([0-9]\).*\1$" /etc/inittab
    # grep-E "^([0-9]).*\1$" /etc/inittab

      示例4:

        1、找出某文件中的,1位数,或2位数.

    # grep"[0-9]\{1,2\}" /proc/cpuinfo 【错误】
    # grep"\<[0-9]\{1,2\}\>" /proc/cpuinfo 【正确】

        2、找出ifconfig命令结果中的1-255之间的整数。


        3、查找当前系统上名字为hive(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd

    # grep"^\<hive\>" /etc/passwd


    示例5:

        1、分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:

    l1:1:wait:/etc/rc.d/rc1

    l3:3:wait:/etc/rc.d/rc3

    # grep'^l\([0-9]\):\1.*\1$' /etc/inittab
    # grep-E "^l([0-9]):\1.*\1$" /etc/inittab


        2、找出/boot/grub/grub.conf文件中1-255之间的数字;

    # grep-E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
    /boot/grub/grub.conf


        3、找出ifconfig中0-255之间的数字;

    #ifconfig | egrep --color
    '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

        4、找出ifconfig中所有的IP地址

    # ifconfig |egrep --color
    '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

      

    其他示例:

    1、关闭开启多余的启动项【开机启动项优化】

    [root@oldboy ~]# chkconfig --list | grep '3:on'
    abrt-ccpp       0:off   1:off   2:off   3:on    4:off   5:on    6:off
    abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
    acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
    atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
    auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
    blk-availability        0:off   1:on    2:on    3:on    4:on    5:on    6:off
    cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
    crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off	# 需要
    haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
    ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
    irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
    kdump           0:off   1:off   2:off   3:on    4:on    5:on    6:off
    lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
    messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
    netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
    network         0:off   1:off   2:on    3:on    4:on    5:on    6:off	# 需要
    postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off	# 需要
    sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off	# 需要
    sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off	# 需要
    udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
    

    思路:

    1、关闭全部,然后开启需要的

    #chkconfig --list | grep '3:on'
    #chkconfig --list | grep '3:on' | awk '{print $1}'
    #chkconfig --list | grep '3:on' | awk '{print "chkconfig",$1,"off"}'
    #chkconfig --list | grep '3:on' | awk '{print "chkconfig",$1,"off"}' | bash		# 关闭全部服务
    #chkconfig --list | grep '3:on'
    #chkconfig --list | grep -E 'crond|network|rsyslog|sshd|sysstat'
    #chkconfig --list | grep -E 'crond|network|rsyslog|sshd|sysstat' | awk '{print "chkconfig",$1,"on"}'
    #chkconfig --list | grep -E 'crond|network|rsyslog|sshd|sysstat' | awk '{print "chkconfig",$1,"on"}' | bash	# 开启指定服务
    #chkconfig --list | grep '3:on'
    crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
    network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
    sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
    

    2、除了需要的,其他的全部关闭【下面是步骤】  推荐使用

    #chkconfig --list | grep '3:on'
    #chkconfig --list | grep '3:on' | grep -E 'crond|network|rsyslog|sshd|sysstat'
    #chkconfig --list | grep '3:on' | grep -Ev 'crond|network|rsyslog|sshd|sysstat'
    #chkconfig --list | grep '3:on' | grep -Ev 'crond|network|rsyslog|sshd|sysstat' | awk '{print $1}'
    #chkconfig --list | grep '3:on' | grep -Ev 'crond|network|rsyslog|sshd|sysstat' | awk '{print "chkconfig",$1,"off"}'
    #chkconfig --list | grep '3:on' | grep -Ev 'crond|network|rsyslog|sshd|sysstat' | awk '{print "chkconfig",$1,"off"}' | bash
    #chkconfig --list | grep '3:on'
    crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
    network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
    sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
    




    6、当前命令所在位置和类型 

    [oldboy@moban ~]$ which grep
    /bin/grep
    [oldboy@moban ~]$ type grep
    grep is /bin/grep

    7、参考文章

        每天一个linux命令(39):grep 命令

        linux grep命令详解

        linux中grep命令

        Linux正则表达式语法


    展开全文
  • last 命令 uptime 命令 top命令 grep命令

    千次阅读 2013-05-03 17:14:15
    last 命令 uptime 命令 top 命令 f grep 命令 -A -B -w -v -n -c -H -f sort 命令 -u = sort + uniq

    last 命令

    uptime 命令

    top 命令 f

    grep 命令 -A -B -w -v -n -c -H -f

    sort 命令 -u = sort + uniq

    展开全文
  • grep --help 可以查看到grep的中文用法介绍,显示如下。如果是使用man grep,显示的是英文的介绍。 用法: grep [选项]... PATTERN [FILE]... 在每个 FILE 或是标准输入中查找 PATTERN。 默认的 PATTERN 是一个...
  • Linux-grep命令

    千次阅读 2016-09-26 21:26:03
    概述grep(global search regular expression(RE) and print out the line,全面搜索正则...语法grep命令常见用法在文件中搜索一个单词,命令会返回一个包含“match_pattern”的文本行grep match_pattern file_name
  • Linux中grep命令详解

    万次阅读 多人点赞 2019-04-07 21:48:40
    grep命令 grep 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限...
  • 管道命令及grep命令

    千次阅读 2018-03-22 20:59:04
    管道命令:连接多个linux命令符号:|命令1 | 命令2 将命令1连接到命令2 上grep命令:字符串搜索格式:grep 需要搜索的字符串 搜索的文件参数:-i 忽略大小写查找数据 返回关键字所在行例:grep class Dem.java返回...
  • grep命令的使用详解

    千次阅读 2018-01-14 20:48:45
    grep(global search regular expression(RE) and print out the ...grep命令常见用法-a 不要忽略二进制数据。 -A 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 -b 在显示符合范本样式的那一行之外,并
  • grep命令用法

    千次阅读 2013-11-19 13:53:48
    grep命令用法 1.Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有...
  • find命令和grep命令的区别及详细用法

    千次阅读 2013-01-03 14:47:42
     如果您要在几个文本文件中查找一字符串,可以使用‘grep命令。‘grep’在文本中 搜索指定的字符串。 命令行参数:   grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, grep -l pattern...
  • Centos下grep命令简介

    千次阅读 2015-08-12 14:11:48
    grep命令简介 grep 是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。 grep 可根据提供的匹配...
  • shell中grep命令详解

    千次阅读 2016-11-27 18:13:15
    grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印...
  • grep命令详解

    万次阅读 2019-05-05 16:59:51
    grep命令是文本搜索命令,它可以正则表达式搜索文本,也可从一个文件中的内容作为搜索关键字。 grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串...
  • linux grep命令

    万次阅读 2018-01-31 21:32:14
    grep -[acinv] 搜索内容串 filename -a 以文本文件方式搜索 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便输出行号 -v 反向选择,即找 没有搜索字符串的行 2.利用[]搜索集合字符 -A是显示匹配后和它后面...
  • Linux grep命令

    千次阅读 2019-06-17 16:29:33
    一、grep命令 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 1.1 ...
  • grep 命令详解

    千次阅读 2020-06-04 09:55:17
    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式 grep ...
  • linux命令grep用法汇总

    千次阅读 2015-10-13 17:07:05
    linux grep
  • linux之cp命令grep命令学习

    千次阅读 2011-07-27 21:07:10
    cp命令就是在linux下对文件复制的一个命令,功能很强大啊。其命令格式如下cp (复制档案或目录) cp [-adfilprsu] (source) (destination)cp [options] source1 source2 source3 …. directory参
  • 1、find命令 find命令是一个无处不在命令,是linux中最有用的命令之一。find命令用于:在一个目录(及子目录)中搜索文件,你可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。下面就通过...

空空如也

1 2 3 4 5 ... 20
收藏数 128,654
精华内容 51,461
关键字:

grep