从文本文件中读取特定字符串,然后打印该字符串的值



我正试图从文本文件中读取一个特定的值,然后仅使用批脚本将该值打印在它前面。

脚本应只读取文本文件中聚合列下遇到的所有"总空间",然后在分配列下添加并报告值

无法目瞪口呆,因为不允许在mgmt服务器上安装任何第三方软件。我正在尝试运行脚本。

文本是这样的。。。

总空间WAFL保留快照保留可用空间BSR NVLOG A-SIS Smtape13245GB 1324GB 596GB 11325GB 0GB 6GB 0GB分配给聚合中卷的空间已分配使用量保证vol0 301GB 6GB卷组18GB 18GB无用户数据665GB 662GB无受限9GB 4GB无本地16GB 10GB无已分配已用可用总量总空间1011GB 701GB 10306GB快照保留596GB 7GB 588GBWAFL预留1324GB 94GB 1230GB总空间WAFL保留快照保留可用空间BSR NVLOG A-SIS Smtape4138GB 413GB 0GB 3724GB 0GB 20GB 0GB分配给聚合中卷的空间已分配使用量保证uservol01 706GB 701GB无deptvol02 367GB 364GB无deptvol01 837GB 834GB无已分配已用可用总量总空间1911GB 1900GB 1792GB快照保留区0GB 0GBWAFL保留413GB 41GB 372GB聚合"agg0"总空间WAFL保留快照保留可用空间BSR NVLOG A-SIS Smtape827GB 82GB 0GB 744GB 0GB 0GB分配给聚合中卷的空间已分配使用量保证卷0 710GB 10GB卷已分配已用可用总量总空间710GB 10GB 32GB快照保留0GB 1GB 0GBWAFL保留82GB 4GB 78GB
GNU gawk代码:
$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

@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

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

相关内容

  • 没有找到相关文章

最新更新