grep
是 Linux 及类 Unix 系统中非常强大的文本搜索工具,它可以基于用户提供的模式(pattern)在文件或输入流中搜索匹配的行,并将其输出。以下是一些 grep
命令的实战用法:
基础用法
搜索单个文件:
grep '搜索词' 文件名
例如,要在一个名为
log.txt
的文件中搜索包含 "error" 的行:grep 'error' log.txt
搜索多个文件:
grep '搜索词' 文件1 文件2 ...
搜索目录下的所有文件:
grep '搜索词' ./*
或者递归搜索子目录:
grep -r '搜索词' 目录名
高级用法
忽略大小写:
grep -i 'searchWord' file.txt
-i
参数让搜索不区分大小写。正则表达式搜索:
grep -E 'regex_pattern' file.txt
-E
或--extended-regexp
使用扩展正则表达式。若想使用基本正则表达式(BRE),无需额外参数,默认情况下grep
使用的就是 BRE。反向搜索:
grep -v '排除词' file.txt
-v
参数表示打印不包含指定模式的行。输出行号:
grep -n '搜索词' file.txt
-n
参数会让grep
输出匹配行时带上行号。统计匹配行数:
grep -c '搜索词' file.txt
-c
参数用来计算匹配行的数量而不是列出具体的匹配行。仅显示匹配部分:
grep -o '模式' file.txt
-o
参数只会输出每行中匹配到的部分,而非整行。多模式搜索:
grep -e '模式1' -e '模式2' file.txt
-e
参数后跟多个模式,可同时搜索多个不同的模式。
示例
搜索以特定字符串开头的行:
grep '^inet ' /etc/network/interfaces
这将找到所有以 "inet " 开头的行。
搜索并显示匹配行及其上下文:
grep -C 2 '搜索词' file.txt
-C
参数后面跟着数字,表示显示匹配行前后的若干行。
以上只是 grep
的部分实战用法,实际上 grep
的功能远不止这些,还可以与其他命令结合使用,如管道(|
)、重定向(>
或>>
)等进行更复杂的文本处理任务。