首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

shell中的特殊字符与单引号的困惑

2013-06-25 
shell中的特殊字符与单引号的疑惑tmp.log中存在“[2/1]”“[2/0]”这样的特殊字符我采用语句:grep \[2\/[0-1]

shell中的特殊字符与单引号的疑惑
tmp.log中存在“[2/1]”“[2/0]”这样的特殊字符
我采用语句:

grep '\[2\/[0-1]\]' tmp.log

显示结果是正确的
但使用以下语句就不能显示了
grep '\[2\/*\]' tmp.log

这是什么原因?

另外:单引号中的特殊字符全部视为普通字符,为何在grep语句中还需要添加反斜杠呢
单引号中字符串特殊符号在什么情况下不需要加反斜杠。
shell菜鸟,希望大家可以帮帮,如果我找到答案也会发生来的。
谢谢。
[解决办法]
是这个吧:
grep '\[2\/.*\]' tmp.log

*是shell的通配符,
.*才是正则表达式
[解决办法]
引用
grep '\[2\/*\]' urfile

在正则表达式里面*号表示它左边的字符出现0次或任意多次
'\[2\/*\]'的意思是左方括号后面跟着数字2,数字2后面跟着0个或任意多个斜线,再后面跟着右方括号。
很显然你的数据不符合这个条件,因为你右方括号前面还有其它数字。

引用
单引号中的特殊字符全部视为普通字符,为何在grep语句中还需要添加反斜杠呢

因为方括号在grep里面有特殊意义,它表示一个集合,所以需要转义。

引用
单引号中字符串特殊符号在什么情况下不需要加反斜杠。

具体命令具体分析,没有一个放之四海而皆准的规律。
[解决办法]
grep是正则,不是通配符。

热点排行