我在查看sed中文版手册(老版本),网址是:
... /11/19/972647.shtml
通篇看下来,遇到一个例题:将连续的空白行修改成一个空白行。
但是执行它,它却不会删除空白行。当时不知道是什么原因。
下面是从“sed中文版手册 3.3小节”中引用:
sed -e '/^$/{
N
/^$/D
}' 文件檔
其中 , 函数参数 N(参照[section4.16])表示 , 将空白行的下一行资料添加至 pattern space 内。函数参数
/^$/D 表示 , 当添加的是空白行时 , 删除第一行空白行 , 而且剩下的空白行则再重新执行指令一次。指令重新执行一次 , 删除一行空白行 ,
如此反复直至空白行后添加的为非空白行为止 , 故连续的空白行最后只剩一空白行被输出。
通过命令info sed查看sed 的info手册,这里有一些编程例题,其中有一个是关于压缩空白行的例题,
类似于 cat -s。下面的(脚本)程序来源于sed 的info手册。
#!/usr/bin/sed -f
# delete all leading empty lines
1,/^./{
/./!d
}
# on an empty line we remove it and all the following
# empty lines, but one
:x
/./!{
N
s/^\n$//
tx
}
参考上面提到的脚本程序;并且使用sed 的函数参数 l(小写的L),来修改文章开头提到的命令,得到这个命令:
sed -e'/^$/{N; l; /^$/D}' 文件檔。这个命令可以用来检测输出。最后得到的结果是:
修改一下文章开头提到的命令就能够得到正确的结果。修改后的命令如下:
sed -e'/^$/{N; /^\n$/D}' 文件檔
因此,有可能是翻译或者文字输入的时候漏掉了几个字母导致的问题。
阅读(2044) | 评论(0) | 转发(0) |