LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: soccer

删除空行疑问

[复制链接]
发表于 2006-7-3 18:17:25 | 显示全部楼层
sed -e '/^$/d' file 即可

/^$/ 这个正则表达式表示与所有空行匹配。

/^[[:space:]]/  表示与所有前缀为空格的行匹配  

建议查阅一下正则表达式。我也是刚帮你查到的。哈哈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-4 15:46:04 | 显示全部楼层
谢谢,明白了

cat file
line1
[][][]
line2
[][]
line3
[]
line4

[]:表示一个空格。

[color="Red"]sed test -e 's/[][]*/@/g'                        # 把test中的2个以上的空格用@代替

但是返回的结果:

line1
@
line2
@
line3
@
line4

第3个“@”,这里原来只有1个空格,但是为什么也会被替换?

[color="red"]sed test -e 's/[][]/@/g'                             #  这条命令和上面比较省略了
" [color="red"]* " 号,但是返回的结果能看明白:

line1
@
line2
@
line3

line4



谢谢
回复 支持 反对

使用道具 举报

发表于 2006-7-4 15:58:40 | 显示全部楼层
[][]*表示一个空格跟_零_个或多个空格,故匹配一个空格。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-5 13:57:50 | 显示全部楼层
[][]*    这个表达式还能匹配0个或1个空格?  我的理解是至少匹配2个空格。


我的理解是[]*匹配至少一个空格

谢谢
回复 支持 反对

使用道具 举报

发表于 2006-7-5 14:01:20 | 显示全部楼层
[][]*至少一个;
[]*零个或多个。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-5 15:33:08 | 显示全部楼层
*: 表示前一個 char. set 的出現次數為 0 或多次. 如 ab*c 表示 a 與 c 之間可有 0 或多個 b 存在.

[][]*  因为*号前有2个空格所以匹配1次或多次

[]*   因为*号前只有1个空格所以只匹配0次或多次



原来是这样的
回复 支持 反对

使用道具 举报

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

本版积分规则

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