grep(Global Regular Expression Print)命令是linux中一种强大的文本搜索工作,支持使用正则表达式搜索,根据用户指定的模式对目标文本进行匹配检查并打印出匹配到的内容。
语法:
grep [options] [pattern] files
参数 匹配模式 搜索范围
常用的匹配模式:
- -e :实现多个选项间的逻辑or 关系
- -E:扩展的正则表达式
- -i --ignore-case #忽略字符大小写的差别。
- -n:显示匹配的行号
- -o:仅显示匹配到的字符串
- -w :匹配 整个单词
- -r:以递归方式搜索某个路径下所有文件
常见用法:
1.从指定文件查找某个字符串
grep "UVM_ERROR" run.log
会返回在run.log中包含”UVM_ERROR“字符串所有行的信息
2.显示行号
grep -n "UVM_ERROR" run.log
返回结果中会标记对应的行号
3.搜索文件
grep -rl "UVM_ERROR"
在当前目录搜索包含字符串“UVM_ERROR”的文件,并将文件名打印出来
4.支持正则表达式
grep “^phy” run.log
搜索run.log文件中以phy开头的行
5.以递归方式搜索符合条件的文件
grep -r "connect " ../../../testcase
搜索testcase目录下所有包含connect字符串的文件
6.排目录搜索,在除xx文件夹外的其他文件夹中进行递归搜索
grep -rn "uvm_hdl_force" --exclude-dir=work --exclude-dir=\.svn
7.查找并替换
sed -i "s/uvm_hdl_force/\`DVL_HDL_FORCE/g" `grep "uvm_hdl_force" -rl ./testcase`
//递归搜索testcase中所有文件,将所有uvm_hdl_force替换成`DVL_HDL_FORCE