+ -
当前位置:首页 → 问答吧 → 如何一次一行的解析grep返回的多行结果

如何一次一行的解析grep返回的多行结果

时间:2011-08-24

来源:互联网

各位亲:
程序中用命令df -k | grep dsk获得了以下结果
/dev/dsk/c1t0d0s0 20168929 8670399 11296841 44% /
/dev/dsk/c1t1d0s6 70589121 59283595 10599635 85% /export/home0
/dev/dsk/c1t2d0s6 70589121 226205 69657025 1% /export/home1
/dev/dsk/c1t3d0s6 70589121 65553 69817677 1% /export/home2
/dev/dsk/c1t0d0s7 41350026 23329270 17607256 57% /export/home

我想每次读取一行,行数不固定,依每台机器的磁盘数目决定.将每行的不同数据装入不同的字符数组里,循环将所有行读完,请问该如何实现哪?

作者: jidaming   发布时间: 2011-08-24

df -k | grep dsk >result.txt
cat result.txt|while read line;do


done
每次一行,读到变量$line中

作者: wobenpingfan_y   发布时间: 2011-08-24

这个是要C程序实现的。。。。。

作者: jidaming   发布时间: 2011-08-24

C/C++ code
#!/bin/bash

df | awk 'BEGIN{ row=1 }
{
    #record in matrix
    for(col=1;col<=NF;++col)
    {
        matrix[row,col]=$col;
    }

    row++;
}
    
END{
    for(i=1;i<row;++i)
    {
        for(j=1;j<=NF;++j)
        {
            print matrix[i,j]" ";
        }

        print "\n"
    }
}

'

作者: qq120848369   发布时间: 2011-08-24

用df的话,感觉挺麻烦的
1.要把结果弄到一个临时文件里面,然后你的程序再去读取。
2.或搞个管道,把df的结果从管道发送到你程序。

去查下statfs

作者: yyysss520   发布时间: 2011-08-24