阅读量:0
grep
是一个强大的命令行工具,用于在文件中搜索指定的模式(字符串或正则表达式)。它的名字来源于 "global regular expression print",常用于文本处理、日志分析等任务。以下是 grep
命令的详细介绍和常用操作:
基本用法
- 搜索匹配的行
例如:grep "pattern" filename
这将搜索并显示grep "error" /var/log/syslog
/var/log/syslog
文件中包含 "error" 的行。
常用选项
忽略大小写
grep -i "pattern" filename
例如:
grep -i "error" /var/log/syslog
这将搜索并显示文件中包含 "error" 或 "Error" 等大小写不同的行。
显示行号
grep -n "pattern" filename
例如:
grep -n "error" /var/log/syslog
这将显示匹配行的行号。
递归搜索
grep -r "pattern" directory
例如:
grep -r "error" /var/log
这将在
/var/log
目录及其子目录中的所有文件中搜索 "error"。仅显示匹配的文件名
grep -l "pattern" directory/*
例如:
grep -l "error" /var/log/*
这将仅显示包含 "error" 的文件名。
显示不匹配的行
grep -v "pattern" filename
例如:
grep -v "error" /var/log/syslog
这将显示文件中不包含 "error" 的行。
匹配整个单词
grep -w "pattern" filename
例如:
grep -w "error" /var/log/syslog
这将仅匹配整个单词 "error",而不会匹配像 "error123" 这样的部分字符串。
显示上下文行
grep -C 2 "pattern" filename
例如:
grep -C 2 "error" /var/log/syslog
这将显示匹配行以及上下各两行的内容。
使用正则表达式
使用基本正则表达式
grep "regex" filename
例如:
grep "e[0-9]r" /var/log/syslog
这将匹配 "e" 后跟一个数字,再跟一个 "r" 的模式。
使用扩展正则表达式
grep -E "regex" filename
或者使用
egrep
:egrep "regex" filename
例如:
grep -E "error|warning" /var/log/syslog
这将匹配 "error" 或 "warning"。
示例总结
简单搜索
grep "root" /etc/passwd
忽略大小写
grep -i "root" /etc/passwd
显示行号
grep -n "root" /etc/passwd
递归搜索
grep -r "root" /etc/
仅显示匹配的文件名
grep -l "root" /etc/*
显示不匹配的行
grep -v "root" /etc/passwd
匹配整个单词
grep -w "root" /etc/passwd
显示上下文行
grep -C 2 "root" /etc/passwd