shell中的grep命令
grep,全局(global)正则表达式(regex)版本(pattern),允许对文本文件进行模式查找。如果找到匹配,打印所有包含模式的行。
基本语法如下:
grep [option] ... PATTERN [FILE] ...
例如在menu.h和main.c文件中查找包含字符串"hello world"的行:
grep -i 'hello world' menu.h main.c
PATTERN为字符串(例如"hello world")和变量(例如"$myvar")时,应使用双引号;PATTERN为正则表达式时,应使用单引号。
常用的grep选项有:
grep ".action" *.js
或者 find -name dao.js | grep ".action"
grep -v "48" data.f
grep '48\>' data.f
模式范围:
grep '48[34]' data.f
不匹配行首:
grep '^[^48]' data.f
设置大小写:
grep -i 'sept' data.f | grep 483
或者 grep '[Ss]ept' data.f | grep 483
匹配任意字符:
grep '[A-Z][A-Z]..C' data.f
模式出现次数:
grep '6\{2,6}3' data.f
空行:
grep '^$' data.f
匹配特殊字符,例如$.'"*[]^|\+{}()
等,需要在特殊字符前加''。
例如匹配包含"."的所有行:
grep '\.' data.f
grep命令常常和管道符号|
联合起来使用。
查询目录:
ls -l | grep '^d'
查询进程(例如查看DNS服务器是否正常运行),同时丢弃ps命令中的grep进程:
ps ax | grep "named" | grep -v "grep"
grep除了适用于文件,也适用于变量。
STR="HELLO WORLD"
echo $STR | grep "HELLO"
grep是一个很强大而流行的工具,如果要通过文件快速查找字符串或模式,是一个很好的选择。简单地说,grep是shell编程中很重要的工具,尤其在使用其他linux工具和进行变量替换时将发现这一点。