bash合并起始和结束相同的行

时间:2013-01-23 20:10:35

标签: linux bash shell sed awk

伙计,我怎么能打开这个文件:

ops01.mysite.com /dev/mapper/sys-home 7700480  602202 7098278    8% /home
ops01.mysite.com /dev/mapper/sys-tmp   512000     471  511529    1% /tmp
ops01.mysite.com /dev/mapper/sys-var   512000    3236  508764    1% /var
ops01.mysite.com /dev/mapper/sys-home   58G   26G   30G  47% /home
ops01.mysite.com /dev/mapper/sys-tmp   3.9G  2.3G  1.5G  61% /tmp
ops01.mysite.com /dev/mapper/sys-var   3.9G  533M  3.2G  15% /var
ops02.mysite.com /dev/mapper/sys-home 3424256  250425 3173831    8% /home
ops02.mysite.com /dev/mapper/sys-tmp   262144      17  262127    1% /tmp
ops02.mysite.com /dev/mapper/sys-var   262144    2647  259497    2% /var
ops02.mysite.com /dev/mapper/sys-home   52G  9.5G   40G  20% /home
ops02.mysite.com /dev/mapper/sys-tmp   4.0G  137M  3.7G   4% /tmp
ops02.mysite.com /dev/mapper/sys-var   4.0G  419M  3.4G  11% /var

进入这一个:

ops01.mysite.com /dev/mapper/sys-home 7700480  602202 7098278    8% /home   ops01.mysite.com /dev/mapper/sys-home   58G   26G   30G  47% /home
ops01.mysite.com /dev/mapper/sys-tmp   512000     471  511529    1% /tmp    ops01.mysite.com /dev/mapper/sys-tmp   3.9G  2.3G  1.5G  61% /tmp
ops01.mysite.com /dev/mapper/sys-var   512000    3236  508764    1% /var    ops01.mysite.com /dev/mapper/sys-var   3.9G  533M  3.2G  15% /var
ops02.mysite.com /dev/mapper/sys-home 3424256  250425 3173831    8% /home   ops02.mysite.com /dev/mapper/sys-home   52G  9.5G   40G  20% /home
ops02.mysite.com /dev/mapper/sys-tmp   262144      17  262127    1% /tmp    ops02.mysite.com /dev/mapper/sys-tmp   4.0G  137M  3.7G   4% /tmp
ops02.mysite.com /dev/mapper/sys-var   262144    2647  259497    2% /var    ops02.mysite.com /dev/mapper/sys-var   4.0G  419M  3.4G  11% /var

所以当导演是相同的时候,合并那些线 (在OSX中,df命令输出inode和空间使用情况,但在我正在使用的这个redhat中,我必须为空间使用运行一个df -h,并使用一个df -i来获取inode)

我用过:

cat file | sed 's/[0-9]% /*\n/ /'

尝试在下一行中的文本的每个'%'之后替换文本...但这根本不起作用...:S 我只是不能通过'ops01.mysite.com'过滤,因为我不知道有多少服务器需要检查。 提前谢谢

2 个答案:

答案 0 :(得分:1)

分别运行2 df个命令,将结果保存到单独的文件,然后join这两个文件。

df > df-size
df -i > df-inodes
join df-size df-inodes

答案 1 :(得分:1)

awk '{a[$1$2]=a[$1$2]" "$0;next}END{for(i in a){print a[i]}}' your_file

检查here