zoukankan      html  css  js  c++  java
  • 07、shell三剑客之grep

    grep是过滤来自一个文件或标准输入匹配模式内容。

    除了grep外,还有egrep,fgrep。

    egrep是grep的扩展,相当于grep -E 。fgrep相当于grep -f,用的少

    用法:grep [OPTION]......PATTERN[FILE].....

    参数详解:

    -E    模式是扩展正则表达式(ERE)
    -F    模式是换行分隔固定字符串
    -G    模式是基本正则表达式(BRE)
    -P    模式是prel正则表达式
    -e    使用模式匹配,可指定多个模式匹配
    -f    从文件每一行获取模式
    -i    忽略大小写
    -w    匹配整个单词
    -x    匹配整行
    -v    反向匹配

    输出控制:

    -m;-max-count = NUM    输出匹配的结果num数
    -n    打印行号
    -H    打印每个匹配的文件名
    -h    不输出文件名
    -o    只打印匹配的内容
    -q    不输出正常信息
    -s    不输出错误信息
    -r    递归目录
        --include=FILE_PATTERN        只搜索匹配的文件
        --exclude=FILE_PATTERN        跳过匹配的文件
        --exclude-from=FILE    跳过匹配的文件,来自文件模式
        --exclude-dir=    跳过匹配的目录
    
    -c    只打印每个文件匹配的行数

    内容控制:

    -B    打印匹配的前几行
    -A    打印匹配的后几行
    -C    打印匹配的前后几行
    --color    匹配的字体颜色

    例子:

    1)输出b文件中在a文件相同的行

    grep -f a b

    2)输出b文件中在a文件不同的行

    grep -v -f a b

    3)匹配多个模式

    echo "a bc de" | xargs -n1 | grep -e "a" -e "c"

    4)删除空格http.conf文件空行或开头#的行

    grep -E -v "^ $ | ^#" /etc/httpd/conf/httpd.conf

    5)匹配开头部分大小写的单词

    echo "a b c d" | xargs -n1 | grep -i a
    或者
    echo "A B c d" | xargs -n1 | grep '[Aa]'

    6)只显示匹配的字符串

    echo "这是一个测试" | grep -o ""

    7)输出匹配的前五个结果

    seq 1 20 | grep -m 5 -e "[0-9]{2}"

    8)统计匹配的行数

    seq 1 20 | grep -c -e "[0-9]{2}"

    9)匹配b字符开头的行

    echo "a b c d" | xargs -n1 | grep -e "^b"

    10)匹配de字符结尾的行并输出匹配的行号

    echo "a ab abc abcd abcde" | xargs -n1 | grep -n "de$"

    11)递归搜索/etc目录下包含IP的conf后缀文件

    grep -r'192.167.1.1'/ etc --include * .conf

    12)排除搜索bak后缀的文件

    grep -r '192.168.1.1'/opt --exclude *.bak

    13)排除来自文件中的文件

    grep -r'192.167.1.1'/ opt --exclude-from文件

    14)匹配41或41的数字

    seq 41 45 | grep -E "4[12]"

    15)匹配至少2个字符

    seq 1 13 | grep -E '[0-9]{2}'

    16)匹配至少2个字符的单词,最多3个字符的单词

    echo “a ab abc abcd abcde” | xargs -n1 | grep -E -w -o'[az] {2,3}'

    17)匹配所有IP

    ifconfig  | grep -E "([0-9]{1,3}.){3}[0-9]{1,3}"

    18)打印匹配结果及后3行

    seq 1 10 | grep 5 -A 3

    19)打印匹配结果及前3行

    seq 1 10 | grep 5 -B 3

    20)打印匹配结果及前后3行

    seq 1 10 | grep 5 -C 3

    21)不显示输出

    #grep'a'abc
    grep : abc :没有 这样的文件或目录 
    #grep -s'a'abc
    #echo $?
    2
    不显示正常输出:
    #grep -q'a'a.txt

    grep支持上一章的基础和扩展正则表达式字符。

  • 相关阅读:
    清除System.Web.HttpRuntime.Cache缓存
    C# 自动添加文件头注释的方法
    MVC中为站点添加是否开启过滤器
    css 设置页面打印分页
    MVC core TempData Session has not been configured for this application or request.
    abp .net core hangfire JobStorage.Current property value has not been initialized
    数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份
    无法执行程序。所执行的命令为 "C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe" /noconfig /fullpaths @"C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Files oot411ea3248a9fbaun5r0xd.c
    ABP select2 在模态框中搜索框无法输入
    asp access 数据库连接失败(未指定的错误)
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12491190.html
Copyright © 2011-2022 走看看