LinuxSir.cn,穿越时空的Linuxsir!

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

通配符*在sed命令中为什么不生效?

[复制链接]
发表于 2007-11-20 09:24:18 | 显示全部楼层 |阅读模式
我有一个文档, 里面的信息如下:

> cat qw
SOW102.DO.QW
IEN.COPY
ODNE.QI
OEI09.ICE.IS
COPY.OIEA99
QW.IENLIA.IE
OIEN.SAME.EOI
ISLL.EOIE.COPY

现在我想把含有COPY. 的行去掉, 我用了命令

sed '/COPY.*/d' qw

发现它把 .COPY的行也去掉了, 这是什么原因呢?

当我想把子 .COPY的行去掉时, 命令如下:

sed '/*.COPY/d' qw

它却什么也不干, 这到底会是什么原因?

我用的是AIX 的KSH...
发表于 2007-11-20 09:35:59 | 显示全部楼层
这不是通配符,你可以看一下正则表达式的相关资料。
.才是代表任意字符,*代表重复0到N次,所以COPY.*代表含有COPY的行,跟直接用COPY是一个效果
*.COPY是个错误的表达式,所以匹配不了任何东西
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-20 10:10:20 | 显示全部楼层
要实现我想做的工作, 要用什么命令?

要实现把 .COPY and COPY. 单独取出来.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-20 10:29:37 | 显示全部楼层
去掉 .COPY 用 sed '/. \.COPY/d' qw是没问题, 但我想去掉.QW是用 sed '/. \.QW/d' qw 为什么不行呢

去掉 COPY. 用 sed '/COPY\. ./d' qw不行, 不知用什么命令好...
回复 支持 反对

使用道具 举报

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

本版积分规则

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