设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
[已解决]请教shell匹配空行和注释的方法
返回列表
查看:
1579
|
回复:
6
[已解决]请教shell匹配空行和注释的方法
[复制链接]
dragon8021
dragon8021
当前离线
积分
156
IP卡
狗仔卡
发表于 2009-8-28 16:01:41
|
显示全部楼层
|
阅读模式
我现在想到的办法是:
sed -e '/^#/d' -e '/^$/d' < bala.c
想用一个正则就匹配完,但是一直没能成功,试过:
sed -e '/^[#$]/d' <bala.c
sed -e '/^(#|$)/d' <bala.c
sed -e '/^(#.*)?$/d' <bala.c
等等都不行。。。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
dragon8021
dragon8021
当前离线
积分
156
IP卡
狗仔卡
楼主
|
发表于 2009-8-29 14:34:51
|
显示全部楼层
发现一个可以的
sed -e '/^$\|^#/d' <bala.c
不过,为什么用[]会不行呢。。。
回复
支持
反对
使用道具
举报
显身卡
Jockey
Jockey
当前离线
积分
2694
IP卡
狗仔卡
发表于 2009-8-29 19:36:17
|
显示全部楼层
因为
[]
内的
$
匹配的根本就是
$
字符本身。
回复
支持
反对
使用道具
举报
显身卡
huan
huan
当前离线
积分
462
IP卡
狗仔卡
发表于 2009-8-29 23:44:25
|
显示全部楼层
[]中的$还是元字符, LS再试试?
sed -n '/^[^#$]/p' /etc/fstab
grep '^[^#$]' /etc/fstab
复制代码
实际使用中, 我们可能希望把带空格的“空行”也去掉
grep '^[[:blank:]]*[^#$]' /etc/fstab
复制代码
回复
支持
反对
使用道具
举报
显身卡
Jockey
Jockey
当前离线
积分
2694
IP卡
狗仔卡
发表于 2009-8-30 10:56:21
|
显示全部楼层
LS错误。
字符组(也就是
[]
表达式)匹配的是一个字符,而锚点不是字符。实际上,
[]
内几乎可以看作是定义了一门内嵌在regex里的微微微微语言,很多regex字符不是丢失了元匹配语义,就是赋予了新语义,或者改变了语义。
^[^#$]
不会匹配空行,完全是因为:空行根本不包含除linefeed外的任何字符。那么对sed或grep说“给我找这样的行:行首是一个字符,该字符不是
#
也不是
$
”,其结果自然不会给你空行——空行行首没有任何字符。
> cat test.txt
123
#123
$123
> grep '^[#$]' test.txt
#123
$123
>
复制代码
回复
支持
反对
使用道具
举报
显身卡
huan
huan
当前离线
积分
462
IP卡
狗仔卡
发表于 2009-8-31 01:00:36
|
显示全部楼层
嗯, LS正解, 赞
这两天重翻《精通正则表达式》也才注意到[^]这个问题
[^]是实实在在地占了一个字符
P.S.
一楼的sed不成功, 是因为(), |, []等没转义
如果懒得转义, 那就使用扩展正则吧, 如
sed -r '/^(#|$)/d'
回复
支持
反对
使用道具
举报
显身卡
dragon8021
dragon8021
当前离线
积分
156
IP卡
狗仔卡
楼主
|
发表于 2009-9-1 01:16:56
|
显示全部楼层
酱紫,也就是说^[#$]里的$仅仅是个字符而已,已经失掉了其meta-symbol的含义了。于是^[#$]不匹配空行而^(#|$)可以匹配
终于搞明白sed的-e, -r这些参数了,以及-e不使用的时候的副作用
thx
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Java 程序设计开发讨论
Linux小型、嵌入式系统
LinuxSir 论坛管理
Slackware Linux
Archlinux讨论区
Redhat/Fedora/CentOS Linux
Gentoo Linux
硬件设备 Linux 驱动
Linux 程序设计专题讨论
C\C++
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表