首先看看^ $:
$ 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可以,其他都可以。
为什么会出现这么古怪的规律?还希望大虾指点一二!先谢过!
Ubuntu_LW 于 2013-01-21 19:07:13发表:
单引号和双引号不一样
haiyanmao_linux 于 2013-01-18 14:05:29发表:
???
只抽七块骄子 于 2012-08-27 21:12:29发表:
不好意思,回复晚了。。。
首先谢谢你的回答,但是按照你说的使用正则表达式,如何获取含有'(单引号)的行呢?或者含有(的行?谢谢!
相思爱文 于 2012-08-20 20:17:43发表:
很正常的现象,是\的应用
在正则表达式中,有些字符有特殊用途,不想被转义,就要在字符前加\
grep中用到的是正则表达式。
只抽七块骄子 于 2012-08-20 16:17:06发表:
说明一下:对于单引号,是双引号夹单引号。