LinuxSir.cn,穿越时空的Linuxsir!

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

请教一个对输出提行追加到上一行的问题

[复制链接]
发表于 2010-12-2 13:19:43 | 显示全部楼层 |阅读模式
debian:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              3842376    194888   3452300   6% /
tmpfs                  2031724         0   2031724   0% /lib/init/rw
udev                     10240       736      9504   8% /dev
tmpfs                  2031724         0   2031724   0% /dev/shm
/dev/sda2              7692908    845180   6456948  12% /usr
/dev/sda3              3842408    400744   3246476  11% /var
/dev/mapper/vg_svn-lv_svn
                      30963708    176680  29214164   1% /var/svn

现在我想提取各个分区使用情况,可是lvm这里却分成了两行,我知道在vi下面可以在倒数第二行用大写的J把最后一行追加上来,那么可否用sed或者awk完成这个功能?
发表于 2010-12-2 13:46:39 | 显示全部楼层
不熟悉awk,使用Perl:
  1. df | perl -ape '@F == 1 && s/\n$//;'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-2 14:59:38 | 显示全部楼层
谢谢了,perl很强啊。

找到一个sed的办法:
df | sed -e :a -e '$!N;s/\n //;ta'

\n后面的空格就表示把空格开头的行提到前一行的行尾

这样就可以提取占用数值了
df | sed -e :a -e '$!N;s/\n //;ta'|sed 's/  */ /g'|cut -d" " -f1,5
回复 支持 反对

使用道具 举报

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

本版积分规则

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