方括号表达式用法的疑问?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
suanmeilizhi
帖子: 41
注册时间: 2010-10-25 17:17

方括号表达式用法的疑问?

#1

帖子 suanmeilizhi » 2011-11-26 11:17

不管是BRE还是ERE,都是支持方括号表达式的。如果我想将多个字符视为一个单位,[.abcd.]是可以的,所以如果我在一个文件中匹配abcd,应该可以这样

代码: 全选

grep "[[.abcd.]]" filename
但是事实上,会报错

代码: 全选

grep: Invalid collation character
是我理解错了么?正确用法应该是怎样的? :em06
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

Re: 方括号表达式用法的疑问?

#2

帖子 7rack » 2011-11-26 12:19

suanmeilizhi 写了:不管是BRE还是ERE,都是支持方括号表达式的。如果我想将多个字符视为一个单位,[.abcd.]是可以的,所以如果我在一个文件中匹配abcd,应该可以这样

代码: 全选

grep "[[.abcd.]]" filename
但是事实上,会报错

代码: 全选

grep: Invalid collation character
是我理解错了么?正确用法应该是怎样的?
为什么用[[]]呢?不知道你想要表达的是什么,也不是posix字符集,也不是[a-z]匹配其中任意一个小写字母。如果想精确匹配abcd

代码: 全选

grep '\<abcd\>' file
头像
suanmeilizhi
帖子: 41
注册时间: 2010-10-25 17:17

Re: 方括号表达式用法的疑问?

#3

帖子 suanmeilizhi » 2011-11-26 15:35

7rack 写了:
suanmeilizhi 写了:不管是BRE还是ERE,都是支持方括号表达式的。如果我想将多个字符视为一个单位,[.abcd.]是可以的,所以如果我在一个文件中匹配abcd,应该可以这样

代码: 全选

grep "[[.abcd.]]" filename
但是事实上,会报错

代码: 全选

grep: Invalid collation character
是我理解错了么?正确用法应该是怎样的?
为什么用[[]]呢?不知道你想要表达的是什么,也不是posix字符集,也不是[a-z]匹配其中任意一个小写字母。如果想精确匹配abcd

代码: 全选

grep '\<abcd\>' file
方括号表达式里面不是有[..]么,我就想知道这个应该怎么用,为什么我这么用不正确。。。
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

Re: 方括号表达式用法的疑问?

#4

帖子 7rack » 2011-11-27 19:35

可是你用的是

代码: 全选

[[..]]
头像
daemon11
帖子: 60
注册时间: 2011-11-16 17:51

Re: 方括号表达式用法的疑问?

#5

帖子 daemon11 » 2011-11-27 20:44

suanmeilizhi 写了:不管是BRE还是ERE,都是支持方括号表达式的。如果我想将多个字符视为一个单位,[.abcd.]是可以的,所以如果我在一个文件中匹配abcd,应该可以这样

代码: 全选

grep "[[.abcd.]]" filename
但是事实上,会报错

代码: 全选

grep: Invalid collation character
是我理解错了么?正确用法应该是怎样的? :em06
lz ,是你理解错了
[]是只认第一个“[”与第一个“]”的
回复