如何从单词中提取数字

如何从单词中提取数字

我有命令的输出df,并使用cut我已成功提取 22%.但问题是我只想22要不%,因为我将将该值与另一个整数变量进行比较。如何在 Bash 中做到这一点?

答案1

最简单、最快的可能是使用 bash'参数扩展功能, 像这样:

string="22%"
percentage="${string%\%}"

echo "$percentage"   # Output: 22

${string%\%},第一个%具有特殊含义:从参数末尾删除(该参数string在本例中)。

第二个%什么从参数中删除。但由于%在此上下文中具有特殊含义,因此必须使用 进行转义\

有关更多示例和信息,请参阅高级 bash 脚本编写指南第 10 章

答案2

命令行上有很多方法可以提取数字,例如链接到POSIXsedawk工具。但是,既然您直接询问如何使用 bash 来实现这一点。假设我们有一个 shell 变量 $VARIABLE,它被设置为 22%,那么这段代码将帮助您仅获取数字22

user@box:~$ VARIABLE='22%'
user@box:~$ echo "${VARIABLE%%\%}"

输出 22

考虑到这有点令人困惑,尤其是在您的示例中,%此处使用的字符具有特殊含义,例如“从存储在 sheel 变量中的字符串末尾替换”。为了表明应该从末尾删除的是%字面上的字符,我们必须像这样转义它\%

相关内容