Shell awk num函数错误

Shell awk num函数错误,shell,awk,gawk,Shell,Awk,Gawk,我正在尝试执行3命令,并将输出作为一个变量,需要进行一些百分比计算,并显示与示例相同的结果。这可以作为脚本执行 我无法将数据保存在执行命令的主机上,我的脚本将在本地系统上,该系统将在远程主机上执行,并将数据传输回本地计算机。是否有任何可能的方法来完成这项任务 第一命令输出 $ isi status -q | grep -e "^Size" -e "^Used" -e "^Avail" Size:573T Used:448.0T Avail:74T $ isi_classic snapshot

我正在尝试执行3命令,并将输出作为一个变量,需要进行一些百分比计算,并显示与示例相同的结果。这可以作为脚本执行

我无法将数据保存在执行命令的主机上,我的脚本将在本地系统上,该系统将在远程主机上执行,并将数据传输回本地计算机。是否有任何可能的方法来完成这项任务

第一命令输出

$ isi status -q | grep -e "^Size" -e "^Used" -e "^Avail"
Size:573T
Used:448.0T
Avail:74T
$ isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %=%.1f%%\n", $4}'
     Snapshot USED =0.6%
$ isi_classic snapshot usage | tail -n -1 | awk '{ print "\t\t\tSnapshot USED:" $1}'
     Snapshot USED=3.2T
第二命令输出

$ isi status -q | grep -e "^Size" -e "^Used" -e "^Avail"
Size:573T
Used:448.0T
Avail:74T
$ isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %=%.1f%%\n", $4}'
     Snapshot USED =0.6%
$ isi_classic snapshot usage | tail -n -1 | awk '{ print "\t\t\tSnapshot USED:" $1}'
     Snapshot USED=3.2T
示例脚本awk脚本不工作。删除空格后

# isi status -q | grep -e "^Size" -e "^Used" -e "^Avail" | awk 'function print (num)
pipe pipe quote> /Size:/ {TotalSize=$NF~}
pipe pipe quote> /Used:/ {TotalUsed=$NF}
pipe pipe quote> /Avail:/ {TotalAvail=$NF} }
pipe pipe quote> END {
pipe pipe quote>     used=TotalUsed/Total_Size*100
pipe pipe quote>     system("isi_classic snapshot usage | tail -n -1 | awk '{ print "Snapshot_used=" $1}'")
pipe pipe quote>     system("isi_classic snapshot usage | tail -n 1 | awk '{printf "Snapshot_per :%.1f\n", $4}'")
pipe pipe quote>     Usedw/o=Total Used-Snapshot USED/Total Size
pipe pipe quote>     print hostname ": " "\t","Total Size:" Total_Size
pipe pipe quote>     printf "\t\t\tTotalUsed:%.1f\n", TotalUsed, "TB"
pipe pipe quote>     printf "\t\t\tTotalAvail:%.1f\n", TotalAvail, "TB"
pipe pipe quote>     printf "\t\t\tTotalUsed %:%.1f\n", used, "TB"
pipe pipe quote>     printf "\t\t\tSnapshot Used :%.1f\n", Snapshot_used, "TB"
pipe pipe quote>     printf "\t\t\tSnapshot Used %:%.1f\n", Snapshot_per, "TB"
pipe pipe quote>     printf "\t\t\tUsed w/o:%.1f\n", Usedw/o, TB)'
awk: syntax error at source line 1
 context is
        function >>>  print <<<  (num)
        missing }
        missing )
awk: bailing out at source line 7

我相信您的awk代码存在一些语法问题。如果您坚持使用shell+awk,这里有一个开始

使用“:”作为IFS(“-F:”)

将来自stdin(尾随“-”)的输入存储在按键标签(如大小)索引的数组中

$NF+0使awk摆脱讨厌的尾随“T”**注意如果单位改变(即变为G),您将需要该信息来正常化

    [stdin] | awk -F\: '{a[$1]=($NF+0)} END{ ... grind stats here ...}' -

如果你的问题是关于awk的,那就扔掉所有无关的东西。将
isi status-q | grep-e“^Size”-e“^Used”-e“^Avail”的结果保存在文件中。使该文件尽可能小(一行?),因为它仍然显示了awk命令的问题。在仍然出现错误的地方,使awk脚本尽可能小。到那时你很有可能会看到问题,但如果不发布小输入、小脚本、预期结果和实际结果,我将在多个主机上运行此操作,现在我们可以将输出存储在文件中(不允许)。在我的本地系统上,这个脚本将出现,我将推动这个脚本在主机上执行,并将结果返回到一个文件。@jas不是告诉你这是解决方案,而是告诉你如何创建一个用于提问的脚本。您正在请求帮助解析
isi_whatever
的输出-我们没有该命令,因此如果您不向我们显示,我们如何知道它的输出/awk的输入是什么样子的?什么是“样本要求”-样本输入或预期输出?不管是哪一个,另一个都不见了。看看这是否还不清楚。