linux - awk 忽略打印单列。 sh-c

标签 linux bash shell awk

我在尝试将此命令包装在其他命令中时遇到问题。

# 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/

相关文章:

linux - 如何始终从所有命令中突出显示终端上的某些单词

linux - ls 在容器内排序

php - 如何实现单处理模式运行php脚本?

linux - 发送电子邮件 : Linux Script and Array

bash - 一个shell脚本如何控制另一个脚本

linux - 如何在 Linux 命令中两次引用上一条命令的输出?

linux - 在多核和并行处理上运行脚本

linux - 构建 RPM 包的开发版和普通版

linux readdir - 条目 "."和 ".."总是先读吗?

python - 我如何从 Ap cisco 获取客户数量并将其保存在变量中?