LinuxSir.cn,穿越时空的Linuxsir!

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

问个sed的问题

[复制链接]
发表于 2004-8-3 02:28:21 | 显示全部楼层 |阅读模式
这是我从sed手册上选下来的
将文件内连续的空白行 , 删除它们成为一行。其命令列为
sed -e '/^$/{
N
/^$/D
}' 文件档

其中 , 函数参数 N(参照[section4.16])表示 , 将空白行的下一行资料添加至 pattern space 内,D 表示删除 pattern space 内第一个 newline 字母 前的资料。函数参数 /^$/D 表示 ,
当添加的是空白行时 , 删除第一行空白行 , 而且剩下的空白行则再重新执行指令一次。指令重新执行一次 , 删除一行空白行 ,
如此反覆直至空白行後添加的为非空白行为止 , 故连续的空白行最後只剩一空白行被输出。

本人的试验结果:
[xiaocong@xiaocong temp]$ cat a
isadfi



sdf

sdf


sadffsa

sfs


[xiaocong@xiaocong temp]$ sed -e '/^$/{N;/^$/D}' a
isadfi



sdf

sdf


sadffsa

sfs

问三个问题:
1.该程序根本就没有工作
2.他说:“当添加的是空白行时 , 删除第一行空白行而且剩下的空白行则再重新执行指令一次。”  哪里说明 重新执行指令一次?难道是D?
3.是不是每一行读到pattern里的格式都是
^行的内容\n$

还是$在前\n在后
^行的内容$\n
 楼主| 发表于 2004-8-3 16:57:45 | 显示全部楼层
没人回答?
第二个问题已经解决了,原来就是D在起作用
发表于 2004-8-3 17:07:31 | 显示全部楼层
1,已经工作了,但是sed没有给你提供相关的错误信息
2,d命令是删除命令吧
3,匹配整行可以用:
/.*/,如:
sed '1s/.*/xxx/' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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