grep 是一种强大的文本搜索工具,其名称来自“global regular expression print”。以下是 grep 命令的一些常用选项和用法:
基本搜索
- grep 'pattern' filename:在文件中搜索字符串或模式 pattern。
- grep 'string' file1 file2:在多个文件中搜索字符串。
正则表达式
- grep -E 'pattern' filename 或 egrep 'pattern' filename:使用扩展正则表达式进行搜索。
- grep -G 'pattern' filename:使用基本正则表达式进行搜索(默认)。
匹配控制
- grep -i 'pattern' filename:忽略大小写的差异进行搜索。
- grep -v 'pattern' filename:选取不包含指定模式的行。
- grep -w 'pattern' filename:只匹配完整的单词。
- grep -x 'pattern' filename:只匹配整行。
输出控制
- grep -c 'pattern' filename:计算匹配 pattern 的行数。
- grep -l 'pattern' file*:列出包含匹配项的文件名。
- grep -L 'pattern' file*:列出不包含匹配项的文件名。
- grep -o 'pattern' filename:只输出匹配 pattern 的部分,而不是整行。
- grep --color=auto 'pattern' filename:将匹配的文本高亮显示。
上下文控制
- grep -B num 'pattern' filename:显示匹配行及其前 num 行。
- grep -A num 'pattern' filename:显示匹配行及其后 num 行。
- grep -C num 'pattern' filename:显示匹配行及其前后 num 行。
文件和目录
- grep -r 'pattern' ./:递归搜索当前目录及子目录中的所有文件。
- grep -d skip 'pattern' *:忽略目录,只搜索文件。
- grep -D read 'pattern' /dev/*:读取设备文件作为文本。
其他选项
- grep -m num 'pattern' filename:在找到 num 个匹配后停止搜索。
- grep -s 'pattern' filename:禁止错误消息。
- grep -q 'pattern' filename:静默模式,不输出任何内容,只返回退出状态。
- grep -f file 'pattern' filename:从文件中读取模式。
- grep -e 'pattern1' -e 'pattern2' filename:搜索多个模式。
退出状态
grep 的退出状态可以用来在脚本中检查是否找到匹配项:
- 0:找到了匹配的行。
- 1:未找到匹配的行。
- 2:有语法错误或文件无法访问。
以上仅为 grep 命令的部分选项。grep 还有其他高级用法和选项,你可以通过在终端中输入 man grep 或 grep --help 来查看完整的手册。