zoukankan      html  css  js  c++  java
  • linux 命令grep

    linux 命令grep

      grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件。通常来说,grep显示匹配的行。使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行。

      grep命令的语法:

      grep  ‘word’  文件名

      grep  ‘word’  文件1  文件2  文件3

      grep  ‘字符串1  字符串2’  文件名

      commad  |  grep  ‘ 某个东西 ’

      commad  选项1  |  grep  ‘ 数据 ’

      grep  --color  ‘数据’  文件名

     


     

      使用grep来搜索一个文件

    搜索文件

      搜索 /etc/passwd文件下的Linux用户,输入:

    [root@centos-64-min ~]# grep Linux /etc/passwd

      输出内容:

    Linux:x:500:500::/home/Linux:/bin/bash

      可以使用grep去强制忽略大小写。例如使用 -i 选项可以匹配linux  Linux  、LINUX和其他组合:

    grep -i Linux /etc/passwd


     

    递归使用grep

    可以递归地使用grep进行搜索。例如在文件目录下搜索所有包含的字符串"192.168.57.9"的文件

    [root@centos-64-min ~]# grep -r "192.168.57.9" /etc/  

    或是

    [root@centos-64-min ~]# grep -R "192.168.57.9" /etc/

    输出结果  

    /etc/sysconfig/network-scripts/ifcfg-eth0:IPADDR=192.168.57.9

    你会看到搜索到192.168.57.9的结果每一行都前缀以找到匹配的文件名。输出之中包含的文件名可以加-h选项来禁止输出:

    如:

    [root@centos-64-min ~]# grep -hR "192.168.57.9" /etc/
    IPADDR=192.168.57.9

    或是

    [root@centos-64-min ~]# grep -h -R "192.168.57.9" /etc/
    IPADDR=192.168.57.9


    使用grep去搜索文本

    当你搜索Linux是,grep命令将会匹配Linux,linux123,Linux35和其他包含Linux的字符串 ,你可以用-w选项强制只输出那些仅仅包含那个整个单词的行。

    [root@centos-64-min ~]# grep -w linux /etc/passwd


    使用grep命令搜索两个不同的单词

    egrep命令如下:

    egrep  -w  ‘word1 | word2 ’ 、path/to/file

    这里使用到了正则表达式,因此使用的是egrep命令,即扩展的grep命令。


    统计文本匹配的行数

    grep命令可以通过加-c参数显示每个文件中匹配到的次数:

    grep  -c  ‘word’  /path/to/file

    传递-n选项可以输出的航前加入匹配到的行的行号:

    grep  -n  ‘root’  /etc/passwd

    如:

    [root@centos-64-min ~]# grep -n 'root' /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    11:operator:x:11:0:operator:/root:/sbin/nologin


    反转匹配

    使用-v选项来输出不包含匹配项的内容,输出内容仅仅包含那些不含给定单词的行,例如输出所有不包含root的行

    [root@centos-64-min ~]# grep -n 'root' /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    11:operator:x:11:0:operator:/root:/sbin/nologin
    [root@centos-64-min ~]# grep -n "root" /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    11:operator:x:11:0:operator:/root:/sbin/nologin
    [root@centos-64-min ~]# grep -v "root" /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
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    Linux:x:500:500::/home/Linux:/bin/bash


    管道与grep命令

    grep常常与管道一起使用

    如显示磁盘设备的名称:

    [root@centos-64-min ~]# dmesg | egrep '(s|h)d[a-z]'
    NMI watchdog disabled (cpu0): hardware events not enabled
    sd 2:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
    sd 2:0:0:0: [sda] Write Protect is off
    sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00
    sd 2:0:0:0: [sda] Cache data unavailable
    sd 2:0:0:0: [sda] Assuming drive cache: write through
    sd 2:0:0:0: [sda] Cache data unavailable
    sd 2:0:0:0: [sda] Assuming drive cache: write through
    sda: sda1 sda2
    sd 2:0:0:0: [sda] Cache data unavailable
    sd 2:0:0:0: [sda] Assuming drive cache: write through
    sd 2:0:0:0: [sda] Attached SCSI disk
    dracut: Scanning devices sda2 for LVM logical volumes vg_centos64min/lv_root vg_centos64min/lv_swap
    EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts:
    SELinux: initialized (dev sda1, type ext4), uses xattr

    显示CPU的型号:

    [root@centos-64-min ~]# cat /proc/cpuinfo | grep -i "Model"
    model : 42
    model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
    [root@centos-64-min ~]#

    当然也可以不适用管道

    [root@centos-64-min ~]# grep -i 'Model' /proc/cpuinfo
    model : 42
    model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
    [root@centos-64-min ~]# grep 'Model' /proc/cpuinfo
    [root@centos-64-min ~]# grep 'model' /proc/cpuinfo
    model : 42
    model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz


    仅仅显示匹配到内容的文件名字

    grep -l  ‘main’  *.c

    或者可以强制grep以彩色输出:

    grep --color vivek  /etc/passwd

     

  • 相关阅读:
    Oracle学习 第19天 SqlServer数据迁移Oracle
    Oracle学习 第18天 用户、表空间
    Oracle学习 第18天 PL/SQL切换用户/表空间
    Oracle学习 第18天 .NET连接Oracle
    Oracle学习 第18天 RowID与RowNum
    Bat脚本学习-2:查找文件是否存在
    Bat脚本学习-1:合并Sql存储过程
    展望新的一年
    Oracle学习 第17天
    UEditor练习(JSP版)20190603
  • 原文地址:https://www.cnblogs.com/King-Penguin/p/5158997.html
Copyright © 2011-2022 走看看