有一个命令搞不懂

sh/bash/dash/ksh/zsh等Shell脚本
头像
muzuiget
帖子: 1097
注册时间: 2007-12-31 14:57

Re: 有一个命令搞不懂

#16

帖子 muzuiget » 2009-03-22 12:26

cmdblock 写了:根据楼上各位的讲解,我总结一下:
而根据grep这个命令解释出来,是指在b.txt文本中查找a.txt这个字符串,而b.txt中是没有a.txt这个字符串的。
如果使用hard quote的话,又会怎么样呢?我们看下面
cmdblock@debian:~/dos/bash/test$ ls | grep '*.txt'
好像还是不行,为什么呢?因为grep不支持正则表达式,换作下面的egrep就没有任何问题了。
cmdblock@debian:~/dos/bash/test$ ls | egrep '*.txt'
a.txt
b.txt
因为egreap支持正则表达式
如果上面的解释有什么不对,还望各位指出
egrep is the same as grep -E.

-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see
below). (-E is specified by POSIX.)
cmdblock
帖子: 307
注册时间: 2008-12-01 7:52
来自: 蜀山

Re: 有一个命令搞不懂

#17

帖子 cmdblock » 2009-03-22 15:29

egrep is the same as grep -E.
查了一下,果然如上所说。现修改如下
cmdblock@debian:~/dos/bash/test$ ls | grep -E '*.txt'
a.txt
b.txt
temporary.txt
weather.txt
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

Re: 有一个命令搞不懂

#18

帖子 aBiNg » 2009-03-23 12:01

代码: 全选

$ touch \*.txt
$ ls | grep '*.txt'
*.txt
basic regexp 中的 '*' 号,用于首字符时,作通常字符处理;而 extended regexp 中,作空字符处理。
而并非 grep 不支持正则。
Wikipedia 写了:grep is a command line text search utility originally written for Unix. The name is taken from the first letters in global / regular expression / print, a series of instructions for the ed text editor.
http://docs.sun.com/app/docs/doc/819-22 ... x-5?a=view
bluestar0817
帖子: 16
注册时间: 2009-03-13 9:21

Re: 有一个命令搞不懂

#19

帖子 bluestar0817 » 2009-03-24 10:06

是否跟grep命令的内部参数处理方式有关系
回复