• 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支持上一章的基础和扩展正则表达式字符。

  • 相关阅读:
    jQuery attr 与 prop 区别最简单分析
    Js事件处理模型/周期
    canvas实现点击带水纹的按钮
    js作用域问题
    js 函数里的 this
    css3: scrollLeft,scrollWidth,clientWidth,offsetWidth 的区别
    C# 中的Async 和 Await 的用法详解
    1、Task的优势
    探秘C#中的yield关键字
    详解C#中 Thread,Task,Async/Await,IAsyncResult的那些事儿
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12491190.html
Copyright © 2020-2023  润新知