linux grep命令
linux grep命令
grep命令用于查找文件里符合条件的字符串
基本正则表达式
^ 以什么开头 如:“^grep”
$ 以什么结尾
^$ 表示空号
. 匹配除换行符以外的任意一个字符 如:“g.ep”
* 匹配0个或多个字符
[] 匹配一个指定范围内的字符 如: “[abc]” 匹配a或b或c
[^] 匹配一个不在指定范围内的字符 如:“[^abc]” 匹配除了a或b或c的字符
[a-z] 匹配小写字母
[A-Z] 匹配大写字母
[a-zA-Z] 匹配字母
[0-9] or \d 匹配数字
\b或< 锚定单词的开始 如"<grep" or “\bgrep” 匹配以grep开头的单词的行
\b或> 锚定单词的结尾 如">grep" or “grep\b” 匹配以grep结尾的单词的行
扩展正则表达式
{n} 匹配n次
{n,} 至少匹配n次
{n,m} 匹配n到m次,优先匹配m次 如: a"{1,3}" 匹配aaa、aa、a
{,m} 最多匹配m次
+ 匹配至少一次
| 表示或
? 0个或一个字符
参数:
-e 实现多个选项间的逻辑or关系
-E 支持扩展的正则表达式,相当于使用egrep
-i 搜索时,忽略大小写
-r 搜索所有的文件及子目录
-l 显示匹配的文件名
-n 显示行号
-v 显示不包含匹配文本的所有行
-o 只显示匹配的字符串
实例
例如:在/etc/passwd文件中查找单词"root"
grep root /etc/passwd
如果需要搜索文本字符串而不是单个单词,需要加上引号。
grep "hello world" 1.txt
搜索多个关键字
grep -e "1" -e "2" 1.txt
or grep -E "1|2" 1.txt
搜索以a开头的
grep "^a" 1.txt
搜索以a结尾的
grep "a$" 1.txt
搜索带a的
grep ".a" 1.txt
搜索以.结尾的
grep "\.$" 1.txt
注:\是转义符
搜索至少重复一次1的字符
grep "1\{1,\}" 1.txt
or egrep "1{1,} 1.txt
注意:egrep或grep -E可以不转义
搜索命令行历史记录中输入rm命令的记录
history | grep rm
查找sshd进程信息
ps -ef | grep sshd