为什么不能删除空白行?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
frogfrogfrog
帖子: 19
注册时间: 2008-07-13 23:19

为什么不能删除空白行?

#1

帖子 frogfrogfrog » 2008-07-13 23:24

我需要实现:将uptime得到的users之后的内容去掉,然后加上日期,然后输出到uplog文件。

我是这样写的:

代码: 全选

paste -s < uplog  `uptime | sed 's/s,.*$/s/'  > uplog;date >> uplog`|sed 's/^ //'|sed '/^$/d' >uplog
但是得到的uplog里面却有两行,第二行空白。
我写了sed '/^$/d'就是为删除空行,为什么不行呢?是写错了吗?请高手指点一下。

另外,里面有分号,其实算是两条命令了,这个问题能用一条命令实现吗?

谢谢。
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#2

帖子 solcomo » 2008-07-13 23:33

sed '/^[[:space:]]*$/d'

echo "`uptime | sed 's/s,.*$/s/'` `date`" >> uplog
头像
frogfrogfrog
帖子: 19
注册时间: 2008-07-13 23:19

#3

帖子 frogfrogfrog » 2008-07-13 23:40

额滴神呐!

谢谢二楼高手。

不过希望能够解释一下。
sed '/^$/d' 这个不可以mach空白行吗?
sed '/^[[:space:]]*$/d' 阁下提供的这个匹配方法我第一次见到,请问一下:space:的含义,以及用两个方括号是什么意思

还有一个小问题,我看到您在另外一个帖子中用了sed 的-e选项,我看了一些资料不能理解这选项的含义,如果您时间方便的话请您讲解一下。非常感谢。

正在欣赏您的第二条命令...太优美了。简单,实效。
想您学习!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#4

帖子 eexpress » 2008-07-13 23:54

sed跳不过行的。
● 鸣学
头像
frogfrogfrog
帖子: 19
注册时间: 2008-07-13 23:19

#5

帖子 frogfrogfrog » 2008-07-13 23:56

哦。原来sed不能跳行。
谢谢3楼指点。
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#6

帖子 solcomo » 2008-07-14 0:08

...我可不是高手
4楼那个才是高手呢..


sed '/^$/d'
如果行首是空格或者tab就不能删除了
[[:space:]]
匹配的是所有空白字符


如果你需要sed进行多次编辑就可以用-e参数
回复