1. grep 命令概述

grep(Global Regular Expression Print)命令用于查找文件中符合条件的字符串或正则表达式,并将符合的行显示出来。它支持多种匹配模式和参数,功能强大,是Linux系统中常用的文本处理工具之一。

2. grep 语法

grep [options] pattern [files]
或
grep [-abcEFGHhIiLlmnqrsTtvwxy] [-A <显示行数>] [-B <显示行数>] [-C <显示行数>] [-d <动作>] [-e <模式>] [-f <文件>] [---help] [模式] [文件或目录...]

3. 参数说明

基本参数

  • pattern:表示要查找的字符串或正则表达式。
  • files:表示要查找的文件名,可以同时查找多个文件。如果省略此参数,则默认从标准输入中读取数据。

常用选项

  1. -i:忽略大小写进行匹配。
    示例:

    grep -i "example" file.txt
  2. -v:反向查找,只打印不匹配的行。
    示例:

    grep -v "example" file.txt
  3. -n:显示匹配的行号。
    示例:

    grep -n "example" file.txt
  4. -r:递归查找目录中的文件。
    示例:

    grep -r "example" /path/to/directory
  5. -l:只打印匹配的文件名。
    示例:

    grep -l "example" file.txt
  6. -c:只打印匹配的行数。
    示例:

    grep -c "example" file.txt

更多参数说明

  • -a--text:不要忽略二进制的数据信息。
    示例:

    grep -a "example" binaryfile.bin
  • -A <显示行数>--after-context=<显示行数>:除显示符合样式的那一列之外,并显示该行之后的内容。
    示例:

    grep -A 3 "example" file.txt
  • -b--byte-offset:在显示符合样式的那一行之前,标示出该行第一个字符的编号。
    示例:

    grep -b "example" file.txt
  • -B <显示行数>--before-context=<显示行数>:除显示符合样式的那一行之外,并显示该行之前的内容。
    示例:

    grep -B 3 "example" file.txt
  • -c--count:计算符合样式的列数。
    示例:

    grep -c "example" file.txt
  • -C <显示行数>--context=<显示行数>:除显示符合样式的那一行之外,并显示该行之前后的内容。
    示例:

    grep -C 3 "example" file.txt
  • -d <动作>--directories=<动作>:当指定要查找的是目录而非文件时,必须使用此参数。
    示例:

    grep -d recurse "example" /path/to/directory
  • -e <范本样式>--regexp=<范本样式>:指定字符串做为查找文件内容的样式。
    示例:

    grep -e "example" file.txt
  • -E--extended-regexp:将样式视为延伸的正则表达式来使用。
    示例:

    grep -E "exa(mple|mplar)" file.txt
  • -f <规则文件>--file=<规则文件>:指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容。
    示例:

    grep -f patterns.txt file.txt
  • -F--fixed-regexp:将样式视为固定字符串的列表。
    示例:

    grep -F "example" file.txt
  • -G--basic-regexp:将样式视为普通的表示法来使用。
    示例:

    grep -G "exa.mple" file.txt
  • -h--no-filename:在显示符合样式的那一行之前,不标示该行所属于的文件名称。
    示例:

    grep -h "example" file1.txt file2.txt
  • -H--with-filename:在显示符合样式的那一行之前,表示该行所属于的文件名称。
    示例:

    grep -H "example" file.txt
  • -i--ignore-case:忽略字符大小写的差别。
    示例:

    grep -i "example" file.txt
  • -l--file-with-matches:列出文件内容符合指定样式的文件名称。
    示例:

    grep -l "example" file1.txt file2.txt
  • -L--files-without-match:列出文件内容不符合指定样式的文件名称。
    示例:

    grep -L "example" file1.txt file2.txt
  • -n--line-number:在显示符合样式的那一行之前,标示出该行的列数编号。
    示例:

    grep -n "example" file.txt
  • -o--only-matching:只显示匹配的部分。
    示例:

    grep -o "example" file.txt
  • -q--quiet--silent:不显示任何信息。
    示例:

    grep -q "example" file.txt
  • -r--recursive:此参数的效果和指定"-d recurse"参数相同。
    示例:

    grep -r "example" /path/to/directory
  • -s--no-messages:不显示错误信息。
    示例:

    grep -s "example" file.txt
  • -v--invert-match:显示不包含匹配文本的所有行。
    示例:

    grep -v "example" file.txt
  • -V--version:显示版本信息。
    示例:

    grep -V
  • -w--word-regexp:只显示全字匹配的行。
    示例:

    grep -w "example" file.txt
  • -x--line-regexp:只显示全行匹配的行。
    示例:

    grep -x "example" file.txt
  • -y:此参数的效果和指定"-i"参数相同。
    示例:

    grep -y "example" file.txt

4. 使用举例

例1:查找文件中包含“example”单词的行

grep "example" file.txt

例2:递归查找目录中包含“example”单词的文件

grep -r "example" /path/to/directory

例3:查找文件中包含“example”单词的行,并忽略大小写

grep -i "example" file.txt

例4:查找文件中包含“example”单词的行,并显示行号

grep -n "example" file.txt

例5:查找文件中不包含“example”单词的行

grep -v "example" file.txt

例6:查找文件中包含“example”单词的行,并显示前后各两行内容

grep -C 2 "example" file.txt

5. 相关标题

  1. "掌握Linux grep命令:详解及实用示例"
  2. "Linux grep命令全攻略:从基础到高级"
  3. "如何在Linux中使用grep命令进行高效文本搜索"
  4. "grep命令详解及实战应用:Linux文本处理利器

本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝