问答题576/1053grep 命令有哪些用法?

难度:
2021-11-02 创建

参考答案:

grep(global regular expression print)命令是 Linux 和类 Unix 系统中用于在文件中查找符合条件的字符串并输出的命令。grep 支持正则表达式,可以高效地查找并过滤文本内容。

基本语法:

1grep [选项] pattern [文件...]
  • pattern:用于匹配的模式,可以是文本、正则表达式或通配符。
  • 文件:要查找的文件。如果不指定文件,grep 会从标准输入(通常是终端或管道)读取。

常用选项:

1. 基本使用

  • 查找文件中包含 "pattern" 字符串的行:
    1grep "pattern" file.txt
  • 查找当前目录下所有文件中包含 "pattern" 字符串的行:
    1grep "pattern" *

2. 忽略大小写 (-i--ignore-case)

  • 忽略大小写进行搜索:
    1grep -i "pattern" file.txt

3. 显示行号 (-n--line-number)

  • 显示匹配行的行号:
    1grep -n "pattern" file.txt

4. 反向匹配 (-v--invert-match)

  • 显示不包含匹配模式的行:
    1grep -v "pattern" file.txt

5. 显示匹配的次数 (-c--count)

  • 显示文件中匹配模式的行数:
    1grep -c "pattern" file.txt

6. 显示匹配的行数 (-l--files-with-matches)

  • 显示包含匹配模式的文件名,而不是显示匹配的行:
    1grep -l "pattern" *.txt

7. 显示不匹配的文件 (-L--files-without-match)

  • 显示不包含匹配模式的文件名:
    1grep -L "pattern" *.txt

8. 显示匹配的上下文行 (-A-B-C)

  • 显示匹配行的上下文信息,可以显示匹配行前后 N 行:
    • -A:显示匹配行之后的 N 行。
    • -B:显示匹配行之前的 N 行。
    • -C:显示匹配行前后各 N 行。
    示例:
    • 显示匹配行后 3 行:
      1grep -A 3 "pattern" file.txt
    • 显示匹配行前 3 行:
      1grep -B 3 "pattern" file.txt
    • 显示匹配行前后各 3 行:
      1grep -C 3 "pattern" file.txt

9. 递归搜索目录 (-r--recursive)

  • 递归查找目录中的所有文件:
    1grep -r "pattern" /path/to/directory

10. 显示匹配的文件的文件名 (-H--with-filename)

  • 显示匹配的文件名和匹配的行:
    1grep -H "pattern" *.txt

11. 输出匹配的字符串本身 (-o--only-matching)

  • 只输出匹配的部分,而不是整个包含匹配的行:
    1grep -o "pattern" file.txt

12. 使用正则表达式进行匹配 (-E--extended-regexp)

  • 使用扩展正则表达式进行模式匹配(例如支持 +? 等字符):
    1grep -E "pattern" file.txt

13. 只显示匹配的行数 (-q--quiet)

  • 当只需要判断某个模式是否匹配时,可以使用 -q 选项,grep 将不输出任何结果,只返回退出码:
    1grep -q "pattern" file.txt

14. 仅匹配整个单词 (-w--word-regexp)

  • 只匹配整个单词,而不是模式中的部分内容:
    1grep -w "pattern" file.txt

15. 只匹配行的开头 (-x--line-regexp)

  • 只匹配完全符合模式的行:
    1grep -x "pattern" file.txt

16. 将结果输出为唯一值(去重)

  • -o 可以和 sort | uniq 配合使用,得到匹配的唯一值:
    1grep -o "pattern" file.txt | sort | uniq

示例用法:

1. 查找文件中包含“pattern”字符串的行

1grep "pattern" file.txt
  • 输出 file.txt 中包含“pattern”字符串的行。

2. 查找文件中包含“pattern”字符串的行,并忽略大小写

1grep -i "pattern" file.txt
  • 输出包含“pattern”或“PATTERN”或其他大小写组合的行。

3. 查找文件中不包含“pattern”字符串的行

1grep -v "pattern" file.txt
  • 输出所有不包含“pattern”字符串的行。

4. 查找文件中包含“pattern”字符串的行数

1grep -c "pattern" file.txt
  • 输出文件 file.txt 中包含“pattern”字符串的行数。

5. 查找文件中包含“pattern”字符串的文件名

1grep -l "pattern" *.txt
  • 查找当前目录下所有 .txt 文件中包含“pattern”字符串的文件,并输出文件名。

6. 递归查找目录中包含“pattern”字符串的文件

1grep -r "pattern" /path/to/directory
  • 在指定目录及其子目录中查找所有文件中包含“pattern”字符串的行。

7. 显示匹配行及其前后 3 行

1grep -C 3 "pattern" file.txt
  • 输出文件中包含“pattern”字符串的行以及该行上下 3 行内容。

8. 只输出匹配的字符串部分

1grep -o "pattern" file.txt
  • 只输出文件中匹配的部分,而不是包含该部分的整行。

9. 查找文件中完全匹配“pattern”字符串的行

1grep -x "pattern" file.txt
  • 只输出完全等于“pattern”的行。

10. 显示匹配行的行号

1grep -n "pattern" file.txt
  • 输出文件中包含“pattern”字符串的行和相应的行号。

最近更新时间:2024-12-24