grep
实战
与、或、非
-
or
grep -e a -e b filename egrep 'a|b' filename grep -E 'a|b' filename
-
and
grep a filename | grep b grep 'a.*b' filename
-
not
grep -v a filename
其他
- -C2 匹配的上下两行
- -A2 匹配的之后(after)两行
- -B2 匹配的之前(before)两行
- –color=always 高亮显示
- -n –line-number 行号
- -H –with-filename 文件名
- -c –count 只显示数量
- -o 只输出匹配的字符
- . 除了换行符以外的任意字符
- * 0或多个
- \{2,5\} 表示范围,因为shell中{}又特殊含义,所以需要转义
单引号,双引号,不加引号
- 单引号:所见即所得
- 双引号:如果内容中有命令,变量等,会先把变量,命令解析出结果
- 不会将含有空格的字符串视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用
- $美元符, \反斜杠,`反引号,” 双引号 这四个字符在双引号中是具有特殊含义的,需要转义,其他都没有
eg: grep "\\\\" file
和 grep '\\' file
其实是一样的
wiki
操作类型 | 例子 | 描述 |
---|---|---|
精确匹配的字符 | a A y 6 % @ | 字母,数字和许多特殊的字符都可以精确匹配 |
$ \^ + \ \? | 转义一些特殊的字符 | |
\n \t \r | 换行、制表、返回 | |
锚和宏 | ^ | 以什么开始 |
$ | 以什么结尾 | |
group其中任一字符 | [aAeEiou] | 任一字符 |
[^aAeiou] | 任一非..字符 | |
[a-fA-F0-9] | 任一的16进制字符 | |
. | 除了换行符以外的任意字符 | |
按之前的元素进行计数 | + | 一个或者更多(仅仅试用于egrep) |
* | 0或者更多 | |
? | 0或者1 | |
或 | | | 或者 |
分组 | () | 分组计数,并保存在变量中(仅仅试用于egrep) |
下边的对于grep,egrep,fgrep都适用
选项 | 描述 |
---|---|
-i | 忽略大小写 |
-o | 仅输出match的部分 |
-v | 仅输出不满足的行 |
-c | 仅输出满足的行数 |
-L | 仅输出不匹配的文件名 |
-l | 仅输出匹配的文件名 |
-n | 输出的时候同时输出行数 |
-H | 显示文件名和匹配内容 |
-r | 递归 |
查找空行:
grep ^$ xx.text
ag
使用ag
在源代码或数据文件里检索(比grep -r更好) github地址
apt-get install silversearcher-ag
brew install the_silver_searcher
参考
[1]http://www.wellho.net/regex/grep.html [2]http://www.shellcn.net/awk/grep_egrep_sed_awk_perl_vim_js.html
[3]http://blog.csdn.net/justdb/article/details/7539567
[4]https://github.com/ggreer/the_silver_searcher