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
是我理解错了么?正确用法应该是怎样的?

-
7rack
- 帖子: 96
- 注册时间: 2011-08-17 22:49
#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
#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
方括号表达式里面不是有[..]么,我就想知道这个应该怎么用,为什么我这么用不正确。。。
-
daemon11
- 帖子: 60
- 注册时间: 2011-11-16 17:51
#5
帖子
由 daemon11 » 2011-11-27 20:44
suanmeilizhi 写了:不管是BRE还是ERE,都是支持方括号表达式的。如果我想将多个字符视为一个单位,[.abcd.]是可以的,所以如果我在一个文件中匹配abcd,应该可以这样
代码: 全选
grep "[[.abcd.]]" filename
但是事实上,会报错
代码: 全选
grep: Invalid collation character
是我理解错了么?正确用法应该是怎样的?

lz ,是你理解错了
[]是只认第一个“[”与第一个“]”的