LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 837|回复: 9

grep 命令求助

[复制链接]
发表于 2006-6-23 15:21:41 | 显示全部楼层 |阅读模式
grep '[A-Z][a-z].o' 2.sh                  #  查询文件2.sh里第一个字母为大写,第2个
                                    小写,第3个任意字符,最后以o结尾的字符

结果是:

then [color="Red"]Echo "the same"
else  [color="Red"]echo "diff"

第1条记录是符合要求的,但是第2条记录就不对了,第一个字母是小写的,为什么会被查询到?

谢谢
发表于 2006-6-23 16:04:00 | 显示全部楼层
你的 grep 有问题吧?要么就是你那一行还有其他的字符符合条件的。
回复 支持 反对

使用道具 举报

发表于 2006-6-23 16:08:39 | 显示全部楼层
怎么会有这种情况呢?奇怪
你把2.sh,
else echo "diff"行贴一下?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-23 16:53:58 | 显示全部楼层
#!/bin/bash

if test "$1"="$2"

then Echo "the same"

else echo "diff"

fi

谢谢你们
回复 支持 反对

使用道具 举报

发表于 2006-6-23 18:20:48 | 显示全部楼层
你按照我这个步骤贴一下结果看看?

  1. tmp $ cat 2.sh
  2. #!/bin/bash

  3. if test "$1"="$2"

  4. then Echo "the same"

  5. else echo "diff"

  6. fi
  7. tmp $ grep  '[A-Z][a-z].o' 2.sh
  8. then Echo "the same"
  9. tmp $
复制代码

真是奇怪呢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-23 21:22:44 | 显示全部楼层
会不会和语言环境有关?
回复 支持 反对

使用道具 举报

发表于 2006-6-23 21:27:48 | 显示全部楼层
type grep
回复 支持 反对

使用道具 举报

发表于 2006-6-24 11:27:35 | 显示全部楼层
egrep is grep -e
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-27 11:14:07 | 显示全部楼层
把语言环境改成C

LANG=C
grep '[A-Z][a-z].o' 2.sh

再执行上述命令就能返回正确结果了



谁知道是为什么吗?
回复 支持 反对

使用道具 举报

发表于 2006-6-27 11:34:03 | 显示全部楼层
LC_COLLATE分别在C和zh_CN.*的时候,我这里结果还是一样的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表