添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

入门

搜索标准输出(即文本流)

$ grep [options] search_string

在文件中搜索确切的字符串:

$ grep [options] search_string path/to/file

打印 myfile.txt 中包含字符串“mellon”的行

$ grep 'mellon' myfile.txt

文件名中接受通配符。

选项示例说明
-igrep -i ^DA demo.txt忘记区分大小写
-wgrep -w "of" demo.txt仅搜索完整的单词
-Agrep -A 3 'Exception' error.log匹配字符串后显示 3 行
-Bgrep -B 4 'Exception' error.log在匹配字符串前显示 4 行
-Cgrep -C 5 'Exception' error.log在匹配字符串周围显示 5 行
-rgrep -r 'github.io' /var/log/nginx/递归搜索 (在子目录内)
-vgrep -v 'warning' /var/log/syslog返回所有与模式不匹配的行
-egrep -e '^al' filename使用正则表达式 (以'al'开头的行)
-Egrep -E 'ja(s|cks)on' filename扩展正则表达式 (包含 jason 或 jackson 的行)
-cgrep -c 'error' /var/log/syslog计算匹配数
-lgrep -l 'robot' /var/log/*打印匹配文件的名称
-ogrep -o search_string filename只显示字符串的匹配部分
-ngrep -n "go" demo.txt显示匹配的行号

Grep 正则表达式

  • Regex syntax (jaywcjlove.github.io)
  • Regex examples (jaywcjlove.github.io)
  • 有关更复杂的要求,请参阅完整版的正则表达式备忘单。

    通配符(Wildcards)

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

    输出包含匹配字符串的行数 -n 选项

    grep "text" -n file_name
    cat file_name | grep "text" -n
    #多个文件
    grep "text" -n file_1 file_2
    

    忽略匹配样式中的字符大小写

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

    统计文件或文本中包含匹配字符串的行数 -c 选项

    grep -c "text" file_name