-2

我正在尝试从文本文件中读取特定值,然后仅使用批处理脚本在其前面打印该值。

该脚本应仅读取文本文件中聚合列下遇到的所有“总空间”,然后添加并报告分配列下的值。

不能 gawk 因为它不允许在我试图运行我的脚本的 mgmt 服务器上安装任何第三方软件。

文字是这样的……

总空间 WAFL 预留 Snap 预留 可用空间 BSR NVLOG A-SIS Smtape
    13245GB 1324GB 596GB 11325GB 0GB 6GB 0GB

分配给聚合中的卷的空间

分配的使用量保证
vol0 301GB 6GB 卷
组 18GB 18GB 无
用户数据 665GB 662GB 无
受限 9GB 4GB 无
本地 16GB 10GB 无

汇总分配的已用可用性
总空间 1011GB 701GB 10306GB
快照预留 596GB 7GB 588GB
WAFL 预留 1324GB 94GB 1230GB


总空间 WAFL 预留 Snap 预留 可用空间 BSR NVLOG A-SIS Smtape
     4138GB 413GB 0GB 3724GB 0GB 20GB 0GB

分配给聚合中的卷的空间

分配的使用量保证
uservol01 706GB 701GB 无
deptvol02 367GB 364GB 无
deptvol01 837GB 834GB 无

汇总分配的已用可用性
总空间 1911GB 1900GB 1792GB
快照保留 0GB 0GB 0GB
WAFL 保留 413GB 41GB 372GB

聚合'aggr0'

总空间 WAFL 预留 Snap 预留 可用空间 BSR NVLOG A-SIS Smtape
      827GB 82GB 0GB 744GB 0GB 0GB 0GB

分配给聚合中的卷的空间

分配的使用量保证
vol0 710GB 10GB 卷

汇总分配的已用可用性
总空间 710GB 10GB 32GB
快照保留 0GB 1GB 0GB
WAFL 保留 82GB 4GB 78GB

4

2 回答 2

2

GNU 的代码:

$1=="Aggregate" {flag=1}
$1=="Total" && flag==1 {sum=$3}
$1=="Snap" && flag==1 {sum+=$3}
$1=="WAFL" && flag=1 {sum+=$3; flag=0; i++; print "Volume"i, sum"GB"}

>awk -f 脚本文件
卷1 2931GB
卷2 2324GB
音量3 792GB

用于 Windows 的 awk

于 2013-07-23T22:50:39.357 回答
1
@ECHO OFF
SETLOCAL
SET tot=0
SET "agg="
FOR /f "tokens=1-3" %%a IN (yourreport.txt) DO (
 IF %%a%%b==Totalspace CALL :process %%c
 IF %%a%%b==AggregateAllocated SET agg=Y
)
ECHO total: %tot%GB
GOTO :EOF

:process
SET val=%1
SET val=%val:~0,-2%
SET /a tot+=val
SET "agg="
GOTO :eof

你的要求很混乱。没有明显的“聚合”列。如果你说这应该添加产生 abcd 的 xxx、yyy 和 zzz,它会更清楚。事实上,这个解决方案是一个猜测。

于 2013-07-23T19:32:40.380 回答