红联Linux门户
Linux帮助

grep 特殊字符

发布时间:2012-08-20 16:15:13来源:红联作者:只抽七块骄子
首先看看^ $:
$ grep -n '\^' grep.txt
$ grep -n ‘^’ grep.txt
$ grep -n "^" grep.txt
$ grep -n "\^" grep.txt
第一条和最后一条都是匹配该行含有^字符,而中间两行都是输出全部行,同理如$。

再看. “ * [ ] ( ) | \ + ?
$ grep -n '.' grep.txt
$ grep -n '\.' grep.txt
$ grep -n "." grep.txt
$ grep -n "\." grep.txt
第一条和第三条输出全部行,另外两条输出含有.的行。

以上四种形式的命令都可以输出含有* + ?的行。

以上四种形式的命令,不加\的命令行可以输出含有|的行,加\则输出全部行。

$ grep -n '\' grep.txt
grep: Trailing backslash
$ grep -n '\\' grep.txt
31:\
$ grep -n "\" grep.txt
> -bash: unexpected EOF while looking for matching `"'
-bash: syntax error: unexpected end of file
$ grep -n "\\" grep.txt
grep: Trailing backslash

$ grep -n '[' grep.txt
grep: 无效的常规表达式
$ grep -n '\[' grep.txt
27:[
$ grep -n "\[" grep.txt
27:[
$ grep -n "[" grep.txt
grep: 无效的常规表达式

$ grep -n "(" grep.txt
35:(
$ grep -n "\(" grep.txt
grep: 不匹配的 ( 或 \(
$ grep -n '\(' grep.txt
grep: 不匹配的 ( 或 \(
$ grep -n '(' grep.txt
35:(

对于”,除了 $ grep -n """ grep.txt不可以,其他都可以。

对于’,除了$ grep -n "'" grep.txt可以,其他都可以。


为什么会出现这么古怪的规律?还希望大虾指点一二!先谢过!
文章评论

共有 5 条评论

  1. Ubuntu_LW 于 2013-01-21 19:07:13发表:

    单引号和双引号不一样

  2. haiyanmao_linux 于 2013-01-18 14:05:29发表:

    ???

  3. 只抽七块骄子 于 2012-08-27 21:12:29发表:

    不好意思,回复晚了。。。
    首先谢谢你的回答,但是按照你说的使用正则表达式,如何获取含有'(单引号)的行呢?或者含有(的行?谢谢!

  4. 相思爱文 于 2012-08-20 20:17:43发表:

    很正常的现象,是\的应用
    在正则表达式中,有些字符有特殊用途,不想被转义,就要在字符前加\

    grep中用到的是正则表达式。

  5. 只抽七块骄子 于 2012-08-20 16:17:06发表:

    说明一下:对于单引号,是双引号夹单引号。