grep -e 'l\{2,\}' 2.txtgrep -e 'h(ell|a)o' test.txtgrep '[a-z]\{5,\}' test.txtgrep -xf a.txt b.txt //查询a与b共同存在的行grep -vxf b.txt a.txt //查询a的行不在b文件里面的,就是a比b多出来的行 grep -v '^h' test.txt //显示非以h开发的 grep -e '^(h|y)' test.txt //-e支持扩展正则,相当于egrep grep -a 1 'hello' test.txt //除了显示匹配到的行也显示它之后的一行grep -b 1 'hello' test.txt //除了显示匹配到的行也显示它之前的一行grep -c 1 'hello' test.txt //除了显示匹配到的行也显示它之前和之后的一行 grep -r hello xx //在xx目录查找grep -c //统计匹配的行数grep -n //显示行号grep -v '^hello' test.txt //显示不以hello开头的行--很聪明的写法,第一位不以h开发,第二位不以e开发。。。 grep '^[^h]\|^.[^e]\|^..[^l]\|^...[^l]\|^....[^o]' [options]主要参数:-c:只输出匹配行的计数。-i:不区分大 小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及 行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。命令正则表达式: . 匹配单个字符 如..x yix能查出来 ^ 匹配行首 ^d 每行第一个字符为d $ 匹配行尾 t$ 每行最后一个字符为t * 匹配任意字符串 \ 屏蔽特殊字符的含义 a\{2\}b 字母a出现两次 a\{2,\}b 至少出现两次 a\{2,4\}b 出现2到4次[0-9]\{4\}xx[0-9]\{4\} 前四个是数字,中间是xx,后四个是数字pattern正则表达式主要参数:\: 忽略正则表达式中特殊字符的原有含义。^:匹配正则表达式的开始行。$: 匹配正则表达式的结束行。\<:从匹配正则表达 式的行开始。锚定单词的开始,如:/\:到匹配正则表达式的行结束。[ ]:单个字符,如[a]即a符合要求 。[ - ]:范围,如[a-z],即a、b、c一直到z都符合要求 。。:所有的单个字符。* :有字符,长度可以为0 [^] 匹配一个不在指定范围内的字符,如:/[^a-rt-z]ed/匹配不包含a-r和t-z的一个字母开头,紧跟ed的行。 + 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 zo 以及 zoo,但不能匹配 z。+ 等价于 {1,}。 ? 匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 do 或 does 中的do 。? 等价于 {0,1}。(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'windows (?=95|98|nt|2000)' 能匹配 windows 2000 中的 windows ,但不能匹配 windows 3.1 中的 windows。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 (?!pattern) 负向预查,在任何不匹配negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'windows (?!95|98|nt|2000)' 能匹配 windows 3.1 中的 windows,但不能匹配 windows 2000 中的 windows。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 或 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式 pcregrep 'windows (?=2000|95|98|nt)' test.txt //windows后面是2000或95..pcregrep 'windows (?!2000|95|98|nt)' test.txt //windows后面非2000,95,98等pcregrep 'windows (?:95|98|nt|2000)' test.txt //与第一种一样egrep:为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操作. 比方说:- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可.- grep 不支持 a|b 或 (abc|xyz) 这类或一比对, 但 egrep 则可.fgrep:不作 re 处理, 表达式仅作一般字符串处理, 所有 meta 均失去功能.pcregrep:pcregrep - a grep with perl-compatible regular expressions , perl正则,是最流行和规范的
