Posted on 2010-01-19 10:07
Prayer 阅读(1310)
评论(0) 编辑 收藏 引用 所属分类:
Shell
指定两个用逗号分开的规则表达式,sed 将与所有从匹配第一个规则表达式的第一行开始,到匹配第二个规则表达式的行结束(包括该行)的所有行匹配。例如,以下命令将打印从包含 "BEGIN" 的行开始,并且以包含 "END" 的行结束的文本块:
$ sed -n -e ’/BEGIN/,/END/p’ /my/test/file | more
如果没发现 "BEGIN",那么将不打印数据。如果发现了 "BEGIN",但是在这之后的所有行中都没发现 "END",那么将打印所有后续行。发生这种情况是因为 sed 面向流的特性 -- 它不知道是否会出现 "END"。
sed '/./,/^$/!d' test 的解释:从非空行开始,包含一个空行的所有行。第一行一定是个非空行。
而cat –s 只是将所有的空行压缩成一个空行。因此第一行可以是空行。