• Linux grep 命令


    Linux grep 命令用于查找文件里符合条件的字符串。

    grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

    语法

    grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    参数

    • -a 或 --text : 不要忽略二进制的数据。
    • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
    • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
    • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
    • -c 或 --count : 计算符合样式的列数。
    • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
    • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
    • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
    • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
    • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
    • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
    • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
    • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
    • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
    • -i 或 --ignore-case : 忽略字符大小写的差别。
    • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
    • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
    • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
    • -o 或 --only-matching : 只显示匹配PATTERN 部分。
    • -q 或 --quiet或--silent : 不显示任何信息。
    • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
    • -s 或 --no-messages : 不显示错误信息。
    • -v 或 --revert-match : 显示不包含匹配文本的所有行。
    • -V 或 --version : 显示版本信息。
    • -w 或 --word-regexp : 只显示全字符合的列。
    • -x --line-regexp : 只显示全列符合的列。
    • -y : 此参数的效果和指定"-i"参数相同。

    白话文概括常见的

    OPTIONS:
        -i: 不区分大小写
        -v: 查找不包含指定内容的行,反向选择
        -w: 按单词搜索
        -o: 打印匹配关键字
        -c: 统计匹配到的行数
        -n: 显示行号
        -r: 逐层遍历目录查找
        -A: 显示匹配行及后面多少行    
        -B: 显示匹配行及前面多少行
        -C: 显示匹配行前后多少行
        -l:只列出匹配的文件名
        -L:列出不匹配的文件名
        -e: 使用正则匹配
        -E:使用扩展正则匹配
        ^key:以关键字开头
        key$:以关键字结尾
        ^$:匹配空行
        --color=auto :可以将找到的关键词部分加上颜色的显示

    颜色显示(别名设置):

    临时设置:
    # alias grep='grep --color=auto'            //只针对当前终端和当前用户生效
    
    永久设置:
    1)全局(针对所有用户生效)
    vim /etc/bashrc
    alias grep='grep --color=auto'
    source /etc/bashrc
    
    2)局部(针对具体的某个用户)
    vim ~/.bashrc
    alias grep='grep --color=auto'
    source ~/.bashrc

    实例:

    # grep -i root passwd                        忽略大小写匹配包含root的行
    # grep -w ftp passwd                         精确匹配ftp单词
    # grep -w hello passwd                         精确匹配hello单词;自己添加包含hello的行到文件
    # grep -wo ftp passwd                         打印匹配到的关键字ftp
    # grep -n root passwd                         打印匹配到root关键字的行好
    # grep -ni root passwd                         忽略大小写匹配统计包含关键字root的行
    # grep -nic root passwd                        忽略大小写匹配统计包含关键字root的行数
    # grep -i ^root passwd                         忽略大小写匹配以root开头的行
    # grep bash$ passwd                             匹配以bash结尾的行
    # grep -n ^$ passwd                             匹配空行并打印行号
    # grep ^# /etc/vsftpd/vsftpd.conf        匹配以#号开头的行
    # grep -v ^# /etc/vsftpd/vsftpd.conf    匹配不以#号开头的行
    # grep -A 5 mail passwd                      匹配包含mail关键字及其后5行
    # grep -B 5 mail passwd                      匹配包含mail关键字及其前5行
    # grep -C 5 mail passwd                     匹配包含mail关键字及其前后5行
    [root@iZbp1efx14jd8471u20gpaZ tmp]# cp /etc/passwd .
    [root@iZbp1efx14jd8471u20gpaZ tmp]# ll
    total 8
    srwxr-xr-x 1 root root    0 Feb  5 20:30 Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
    -rw-r--r-- 1 root root  956 Feb  5 21:03 passwd
    drwx------ 3 root root 4096 Feb  5 20:30 systemd-private-38985bf8993a45cc8f6c10b0d55ebf1c-chronyd.service-svMPKF
    [root@iZbp1efx14jd8471u20gpaZ tmp]# alias grep='grep --color=auto'
    [root@iZbp1efx14jd8471u20gpaZ tmp]# group root passwd
    -bash: group: command not found
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep root passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -w ftp passwd
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    [root@iZbp1efx14jd8471u20gpaZ tmp]#  grep -wo ftp passwd
    ftp
    ftp
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -n root passwd
    1:root:x:0:0:root:/root:/bin/bash
    10:operator:x:11:0:operator:/root:/sbin/nologin
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -nic root passwd
    2
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -ni root passwd
    1:root:x:0:0:root:/root:/bin/bash
    10:operator:x:11:0:operator:/root:/sbin/nologin
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -i ^root passwd
    root:x:0:0:root:/root:/bin/bash
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep bash$ passwd
    root:x:0:0:root:/root:/bin/bash
    [root@iZbp1efx14jd8471u20gpaZ tmp]#  grep -n ^$ passwd
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep ^# /etc/vsftpd/vsftpd.conf
    grep: /etc/vsftpd/vsftpd.conf: No such file or directory
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -A 5 mail passwd
    mail:x:8:12:mail:/var/spool/mail:/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
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    [root@iZbp1efx14jd8471u20gpaZ tmp]# grep -B 5 mail passwd
    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
  • 相关阅读:
    创建user keywords
    robotframework中list和dict variables
    安装sshlibrary库报错:Could not find a version that satisfies the requirement
    【转】用U盘制作启动盘后空间变小的恢复方法
    docker "exec format error"
    window cmd 设置IP,关闭防火墙,开启远程桌面
    Linux iptables
    python logging 模块
    docker 命令
    python xmlrpc入门
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12266933.html
Copyright © 2020-2023  润新知