我在尝试将此命令包装在其他命令中时遇到问题。
# Target Command:
/bin/df / | awk END' { gsub(/\%/, ""); print $5} '
# What I want:
/bin/sh -c " [command above goes here]"
我遇到了 awk 和所有引号的问题... 我试过:
bin/sh -c "/bin/df / | awk END' { gsub(/\%/, "'"''"'"); print $5} '"
但问题是 awk 在这种情况下似乎并不只打印列 $5。
如何修复上述命令 awk
命令以仅打印第 5 列(最后一行)?
PS:我想做的是获取已用磁盘的百分比(不包括 % 符号)。因为我是从一个不支持管道的程序中调用它的,所以我使用的是 sh -c
。
最佳答案
您可以使用:
/bin/sh -c "/bin/df | awk 'END{gsub(/%/, \"\", \$5); print \$5}'"
$
也需要转义。
根据下面@Ed 的评论,如果 $5
在某些版本的 awk 中的 END
block 中不可用,则使用:
/bin/sh -c "/bin/df | awk '{p=\$5} END{sub(/%/, \"\", p); print p}'"
关于linux - awk 忽略打印单列。 sh-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275167/