grep命令使用

  Linux grep 命令用于查找文件里符合条件的字符串。

  grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。

语法结构

grep  参数  符合文本样式  文件

参数

  • -A 10 : 除了显示符合范本样式的那一列之外,并显示该行之后 10 行的内容。
  • -B 10 : 除了显示符合样式的那一行之外,并显示该行之前 10 行的内容。
  • -C 10 : 除了显示符合样式的那一行之外,并显示该行之前后 10 行的内容。
  • -c : 计算符合样式的列数。
  • -e <范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -r 或 --recursive : 递归方式查找
  • -v 或 --invert-match : 显示不包含匹配文本的所有行。

实例

1、精确查找

  查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行

grep test *file 

  查找 log 日志文件中包含 Exception 字符串的行并展示之后的 3 行内容

grep  -A 3 "Exception" waimai-d-search-query-server.log

2、递归查找

  以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容

grep -r update /etc/acpi 

3、反向查找

  前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行

grep -v test *test*

Linux 里利用 grep 和 find 命令查找文件内容

从文件内容查找匹配指定字符串的行:

  $ grep "被查找的字符串" 文件名

例子:在当前目录里第一级文件夹中寻找包含指定字符串的 .in 文件

 $ grep "thermcontact" /.in

从文件内容查找与正则表达式匹配的行:

  $ grep e "正则表达式" 文件名

查找时不区分大小写:

  $ grep i "被查找的字符串" 文件名

查找匹配的行数:

    $ grep -c "被查找的字符串" 文件名

从文件内容查找不匹配指定字符串的行:

   $ grep v "被查找的字符串" 文件名

从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 "ERROR" 的行:

   $ find / -type f -name "*.log" | xargs grep "ERROR"

例子:从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 "thermcontact" 的行:

  $ find . -name "*.in" | xargs grep "thermcontact"

 

posted @ 2021-04-21 20:27  星火燎原智勇  阅读(306)  评论(0编辑  收藏  举报