使用perl以表格形式输出df

使用perl以表格形式输出df,perl,Perl,给定以下命令及其输出: ssh -q $server 'df -hP /raj* Size Used Avail Capacity Mounted On 200G 154G 44G 79% /raj_day 200G 154G 44G 49% /raj1_day 200G 154G 44G 39% /raj2_day 我想转换成表格格式,所以介绍应该是好的。此外,还需要按排序顺序显示容量。有什么关于perl的提示吗 我的剧本如下 ###############

给定以下命令及其输出:

ssh -q $server 'df -hP /raj*

Size   Used  Avail Capacity  Mounted On
200G  154G   44G  79% /raj_day
200G  154G   44G  49% /raj1_day
200G  154G   44G  39% /raj2_day
我想转换成表格格式,所以介绍应该是好的。此外,还需要按排序顺序显示容量。有什么关于perl的提示吗

我的剧本如下

#############################################
#!/usr/local/bin/perl

# Use either -h or -k flag or leave it blank for default (-k)
# -h for human-readable size output
# -k for 1k-block output
$flag = "-h";
@df = `df $flag`;

print "Content-type: text/htmln\n";
print "<table border=2>\n";
print "<tr>\n";

print "<td><b>Filesystem</b></td>\n";

if ($flag eq "-h") {
    print "<td><b>Size</b></td>\n";
}
else {
    print "<td><b>1k-blocks</b></td>\n";
}

print "<td><b>Used</b></td>\n";
print "<td><b>Avail</b></td>\n";
print "<td><b>Capacity</b></td>\n";
print "<td><b>Mounted on</b></td>\n";
print "</tr>\n";

foreach $line (@df) {
    next if ($line =~ /Filesystem/);

    ($fsystem,$blocks,$used,$avail,$capacity,$mounted) = split(/s+/,$line);

    print "fsystem is $fsystem\n";
    print "blocks is $blocks\n";
    print "used is $used\n";
    print "avail is $avail\n";
    print "capacity is $capacity\n";
    print "mounted is $mounted\n";

($number,$sign) = split(/%/,$capacity);
if ($number < 60) {
    print "<tr bgcolor=green>\n";
}
elsif (($number >= 60) && ($number < 90)) {
    print "<tr bgcolor=yellow>\n";
}
else {
    print "<tr bgcolor=red>\n";
}
#
print "<td>$fsystem</td>\n";
print "<td>$blocks</td>\n";
print "<td>$used</td>\n";
print "<td>$avail</td>\n";
print "<td>$capacity</td>\n";
print "<td>$mounted</td>\n";
print "</tr>\n";
}

print "</table>\n";
#############################################
#!/usr/local/bin/perl
#使用-h或-k标志或将其留空作为默认(-k)
#-h表示人类可读的大小输出
#-k表示1k块输出
$flag=“-h”;
@df=`df$flag`;
打印“内容类型:text/htmln\n”;
打印“\n”;
打印“\n”;
打印“文件系统\n”;
如果($flag eq“-h”){
打印“大小\n”;
}
否则{
打印“1k块\n”;
}
打印“已使用\n”;
打印“可用”\n;
打印“容量”\n;
打印“已装入\n”;
打印“\n”;
foreach$行(@df){
下一个if($line=~/Filesystem/);
($fsystem、$blocks、$used、$avail、$capacity、$mounted)=拆分(/s+/,$line);
打印“fsystem是$fsystem\n”;
打印“块是$blocks\n”;
打印“used is$used\n”;
打印“avail是$avail\n”;
打印“容量为$capacity\n”;
打印“装入的是$mounted\n”;
($number,$sign)=拆分(/%/,$capacity);
如果($60){
打印“\n”;
}
elsif(($number>=60)和($number<90)){
打印“\n”;
}
否则{
打印“\n”;
}
#
打印“$fsystem\n”;
打印“$blocks\n”;
打印“$used\n”;
打印“$avail\n”;
打印“$capacity\n”;
打印“$mounted\n”;
打印“\n”;
}
打印“\n”;
输出如下

内容类型:text/htmln 使用的文件系统大小 装机容量 在fsystem is/dev/blocks is da3 95G上
33克58克36%/

使用的是有效的,安装的是容量,系统是tmpf块是
499M 88K 499M 1%/开发/使用为hm

avail is capacity is mounted is fsystem is/dev/blocks is da1
124M 39M 79M 33%/靴

使用的是有效的,安装的是容量


正如daxim已经指出的那样:解析
df
的输出是一个愚蠢的想法,但是如果我不得不砍掉一个小脚本,它可能会如下所示:


df-bm-p/path1/path2/path3 | sed-e'1d'| sort-k 4,4-r-h | column-t

提示:@jack-oh。刚才我做了。刚到这个地方。