grep (Global Regular Expression Print) 是 Linux 中强大的文本搜索工具,它使用正则表达式来搜索文本并输出匹配的行。
grep [选项] '正则表达式' 文件名
-i:忽略大小写-v:反向匹配,显示不匹配的行-n:显示匹配行的行号-c:统计匹配的行数-r 或 -R:递归搜索目录-l:只显示包含匹配项的文件名-w:全词匹配-E:使用扩展正则表达式 (等同于 egrep).:匹配任意单个字符[abc]:匹配 a、b 或 c[^abc]:匹配除了 a、b、c 之外的字符[a-z]:匹配任意小写字母[A-Z]:匹配任意大写字母[0-9]:匹配任意数字^:匹配行首$:匹配行尾\< 或 \b:匹配单词开头\> 或 \b:匹配单词结尾*:匹配前一个字符 0 次或多次\+:匹配前一个字符 1 次或多次 (需用 -E 或转义 \+)?:匹配前一个字符 0 次或 1 次 (需用 -E 或转义 \?){n}:精确匹配 n 次{n,}:匹配至少 n 次{n,m}:匹配 n 到 m 次\:转义特殊字符|:或操作 (需用 -E)():分组 (需用 -E)搜索包含 "error" 的行:
grep 'error' logfile.txt
忽略大小写搜索:
grep -i 'error' logfile.txt
搜索以 "error" 开头的行:
grep '^error' logfile.txt
搜索以数字结尾的行:
grep '[0-9]$' logfile.txt
搜索包含 "error" 或 "warning" 的行:
grep -E 'error|warning' logfile.txt
搜索 IP 地址:
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' logfile.txt
递归搜索目录:
grep -r 'function_name' /path/to/code/
统计匹配行数:
grep -c 'pattern' file.txt
使用 -A, -B, -C 显示上下文:
grep -A 2 -B 2 'error' logfile.txt # 显示匹配行前后各2行
使用 --color=auto 高亮显示匹配:
grep --color=auto 'pattern' file.txt
结合管道使用:
cat file.txt | grep 'pattern' | wc -l
搜索并替换 (结合 sed):
grep -l 'old_pattern' *.txt | xargs sed -i 's/old_pattern/new_pattern/g'
-E 选项可以启用扩展正则通过掌握这些基本正则表达式用法,你可以在 Linux 系统中高效地进行文本搜索和处理。