LinuxSir.cn,穿越时空的Linuxsir!

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

grep 中[]里面的^ 问题[基本解决]

[复制链接]
发表于 2004-4-15 13:39:40 | 显示全部楼层 |阅读模式
$cat filecat filename.deposit
yrend.AS
mothdf
soa.PP
qp.RR
$grep '^[a-z]\{1,6\}\.[a-z]\{1,2\}' filename.deposit
yrend.AS
soa.PP
qp.RR
$grep '^[^A-Z]\{1,6\}\.[a-z]\{1,2\}' filename.deposit
请问为什么最后一句话没有匹配?
难道grep  ’^[^A-Z]‘ 不是表示不是A-Z开头的意思吗????
发表于 2004-4-15 13:56:59 | 显示全部楼层

回复: grep 中[]里面的^ 问题

最初由 icybird_r 发表
$cat filecat filename.deposit
yrend.AS
mothdf
soa.PP
qp.RR
$grep '^[a-z]\{1,6\}\.[a-z]\{1,2\}' filename.deposit
yrend.AS
soa.PP
qp.RR
$grep '^[^A-Z]\{1,6\}\.[a-z]\{1,2\}' filename.deposit
请问为什么最后一句话没有匹配?
难道grep  ’^[^A-Z]‘ 不是表示不是A-Z开头的意思吗????


grep  ’^[^A-Z]‘表示以非大写字母开头
[^ ]表示非括号内的内容匹配。
发表于 2004-4-15 14:46:33 | 显示全部楼层
我觉得用sed更容易理解~
sed -n '/^[A-Z].*/p' #大写开头
sed -n '/^[^A-Z].*/p' #非大写开头
 楼主| 发表于 2004-4-15 15:54:37 | 显示全部楼层

我现在想知道的是为什么最后一句没有效果呢?

本来我以为第二句话和最后一句话一样的意思,结果缺不是这样
发表于 2004-4-15 16:23:23 | 显示全部楼层
我也以为是一个意思呢!
我觉得grep的正则和sed,awk的还是有区别的! 尤其是版本比较混乱,书上说的往往跟自己的机器里的版本不太相符!
试试这样:

  1. grep '^[[:lower:]]\{1,\}.[A-Z]\{1,\}' file
  2. grep '^[^[:upper:]]\{1,\}.[A-Z]\{1,\}' file
复制代码

正则表达式
发表于 2004-4-15 17:32:18 | 显示全部楼层
最初由 javalee 发表
我也以为是一个意思呢!
我觉得grep的正则和sed,awk的还是有区别的! 尤其是版本比较混乱,书上说的往往跟自己的机器里的版本不太相符!
试试这样:

  1. grep '^[[:lower:]]\{1,\}.[A-Z]\{1,\}' file
  2. grep '^[^[:upper:]]\{1,\}.[A-Z]\{1,\}' file
复制代码

正则表达式

我来总结一下。

"UNIX传统正则表达式"适用于grep以及sed,至于"扩展正则表达式"则只适用于awk以及egrep。
两者的概念不一样。javalee兄,需要在下为旧帖补充一下嘛?
发表于 2004-4-15 17:37:43 | 显示全部楼层
最初由 home_king 发表
我来总结一下。

"UNIX传统正则表达式"适用于grep以及sed,至于"扩展正则表达式"则只适用于awk以及egrep。
两者的概念不一样。javalee兄,需要在下为旧帖补充一下嘛?

当然,:资料是比较陈旧,麻烦兄弟整理!整理~~~ :thank
发表于 2004-4-15 17:43:01 | 显示全部楼层
Well. :-)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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