-2
考慮下面的命令及其輸出:DF輸出用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";
如下輸出
內容類型:文本/ htmln 文件系統尺寸使用 擔保條件容量安裝 上 FSYSTEM是/ dev /塊是DA3 95G
33G 58G 36%/使用的果是容量被安裝在FSYSTEM是TMPF塊是
499M 88K 499M 1%的/ dev /使用是HM果是容量被安裝是FSYSTEM是/ dev /塊是DA1
124M 39M 79M 33%/使用的果是容量被安裝引導是
郵政代碼你已經嘗試過了。 – EricM 2012-04-26 15:11:49
提示:[不要解析'df'輸出,這是一個愚蠢的想法。](http://stackoverflow.com/questions/6350466/regex-help-on-unix-df#comment-7437792) – daxim 2012-04-26 15:18:12
@jack - 哦。剛剛做到了。剛到這個地方。 – 2012-04-26 15:25:30