grep 命令在 Linux 系统中是文本搜索的利器,它基于正则表达式进行匹配,能够高效地筛选出包含指定模式的文本行。掌握grep正则表达式的实用技巧,可以帮助你快速定位信息,提高工作效率。以下是一些grep正则表达式的实用技巧,助你高效筛选文件内容。

1. 基本用法

1.1 查找包含指定字符串的行

grep "模式" 文件名

1.2 递归搜索目录中的所有文件

grep -r "pattern" 目录

1.3 显示文件中包含字符串的行及其行号

grep -n "hello" 文件名

1.4 忽略大小写查找文件中包含字符串的行

grep -i "hello" 文件名

1.5 显示文件中不包含字符串的行

grep -v "hello" 文件名

1.6 显示包含字符串的文件名

grep -l "hello" .txt

1.7 显示不包含字符串的文件名

grep -L "hello" .txt

2. 高级用法

2.1 使用正则表达式

grep "正则表达式" 文件名

正则表达式可以是一些纯文本文字,也可以是用来产生模式的一些特殊字符。以下是一些常用的正则表达式元字符:

  • .:匹配任意单个字符(除了换行符)。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • []:匹配括号内的任意一个字符(字符类)。
  • [^]:匹配不在括号内的任意一个字符(否定字符类)。

2.2 输出控制

  • -b:打印输出字节偏移量。
  • -n:打印行号。
  • -r:递归调用。
  • -c:输出符合情况的总数。

2.3 文本控制

  • -A:打印关键字后的内容。
  • -B:打印关键字前的内容。
  • -C:打印关键字前后各一行内容。

3. 实例

3.1 查找包含数字的行

grep "[0-9]" 文件名

3.2 查找包含两个连续数字的行

grep "[0-9][0-9]" 文件名

3.3 查找以特定字符串开头的行

grep "^特定字符串" 文件名

3.4 查找以特定字符串结尾的行

grep "特定字符串$" 文件名

3.5 查找包含特定字符串,且前后有空格的行

grep "特定字符串 \s" 文件名

通过以上实用技巧,你可以在 Linux 系统中高效地筛选文件内容。熟练掌握 grep 正则表达式,将大大提高你的工作效率。