LinuxSir.cn,穿越时空的Linuxsir!

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

用sed匹配"不是以#为开头的行",这个Pattern要怎么写呢?

[复制链接]
发表于 2008-1-14 14:35:40 | 显示全部楼层 |阅读模式
我知道如果用sed 匹配以#开头的行的pattern写法是:
^#,那么反过来用sed匹配"不是以#为开头的行",这个Pattern要怎么写呢?
发表于 2008-1-14 15:35:37 | 显示全部楼层
试试
^[^#]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-14 15:56:24 | 显示全部楼层
Post by remote fish;1807008
试试
^[^#]


这个OK啊,但是我搞不懂为何呢?能不能解释一下哦,谢谢!
回复 支持 反对

使用道具 举报

发表于 2008-1-14 16:07:45 | 显示全部楼层
第一个 ^ 表示行首

[] 指定一个字符的集合作为匹配项, 比如 [#] 就是只包含 #, [a-d] 则是 abcd 这 4 个字母的集合

[] 中的 ^# 表示这个集合包含除了 # 以外的全部字符, 这里的 ^ 表示对当前的集合取补
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-14 16:10:30 | 显示全部楼层
原来^还有取补集的意义啊,谢谢Remote Fish!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-14 16:12:08 | 显示全部楼层
找到了原文 <sed & awk>

A circumflex (^) as first character inside brackets reverses the match to all characters except newline and those listed in the class.
回复 支持 反对

使用道具 举报

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

本版积分规则

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