美文网首页
Linux命令 - grep

Linux命令 - grep

作者: wikizero | 来源:发表于2019-06-23 12:39 被阅读0次

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.

    1、基本用法,在文本中搜索一个单词

    grep keyword xxx.log
    grep "key word" xxx.log  # 当有单词间有分界符时
    grep keyword xx1.log xx2.log  # 同时在多个文本中搜索
    
    

    小例子

    # 搜索当前文件夹中所有的文件
    grep "error" *
    
    # 搜索当前文件夹中所有的log文件
    grep "error" *.log
    
    # 搜索当前文件夹中所有包含redis单词的文件
    grep "error" `ls | grep redis`
    
    

    2、行号显示 -n

    # 搜索包含error的行,并显示行号
    grep -n "error" xxx.log
    
    

    3、反向查找 -v

    # 搜索不包含error的行,并显示行号
    grep -vn "error" xxx.log
    
    

    4、正则查找 -E

    grep -E "pid [0-9]{5}" xxx.log
    或者
    egrep "pid [0-9]{5}" xxx.log
    # 好像不支持\d{5}这种写法...
    
    

    5、只输出匹配到的部分 -o

    # 只获取pid
    grep -E "pid [0-9]{5}" xxx.log | grep -oE "[0-9]{5}"
    
    

    6、统计匹配到的行数 -c

    grep -E -c "pid [0-9]{5}" xxx.log
    或
    grep -E "pid [0-9]{5}" xxx.log | wc -l
    
    

    7、查找匹配文件 -l

    egrep -l "pid ([0-9]{5})" *  # 打印输出文件名
    
    # -L与-l相对
    egrep -L "pid ([0-9]{5})" *  # 打印输出不匹配的文件名
    
    

    8、在多级目录中对文本进行递归搜索 -r

    grep "error" . -r  # .表示当前目录
    
    

    9、匹配忽略大小写 -i

    echo "hello world" | grep -i "HELLO"
    
    

    10、匹配多个关键字 -e

    echo this is a text line | grep -e "is" -e "line" -o
    
    #也可以使用-f选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。
    cat patfile
    aaa
    bbb
    
    echo aaa bbb ccc ddd eee | grep -f patfile -o
    
    

    11、制定匹配文件

    # 只在目录中所有的.php和.html文件中递归搜索字符"main()"
    grep "main()" . -r --include *.{php,html}
    
    # 在搜索结果中排除所有README文件
    grep "main()" . -r --exclude "README"
    
    # 在搜索结果中排除filelist文件列表里的文件
    grep "main()" . -r --exclude-from filelist
    
    

    12、打印出匹配文本之前或者之后的行

    #显示匹配某个结果之后的3行,使用 -A 选项:
    seq 10 | grep "5" -A 3
    
    5
    6
    7
    8
    
    
    #显示匹配某个结果之前的3行,使用 -B 选项:
    seq 10 | grep "5" -B 3
    
    2
    3
    4
    5
    
    
    #显示匹配某个结果的前三行和后三行,使用 -C 选项:
    seq 10 | grep "5" -C 3
    
    2
    3
    4
    5
    6
    7
    8
    
    

    相关文章

      网友评论

          本文标题:Linux命令 - grep

          本文链接:https://www.haomeiwen.com/subject/yyuiqctx.html