我df
在bash脚本中使用该命令:
df . -B MB | tail -1 | awk {'print $4'} | grep .[0-9]*
Run Code Online (Sandbox Code Playgroud)
该脚本返回:
99%
Run Code Online (Sandbox Code Playgroud)
但我只需要数字(进行下一次比较).如果我使用grep
没有点的正则表达式:
df . -B MB | tail -1 | awk {'print $4'} | grep .[0-9]*
Run Code Online (Sandbox Code Playgroud)
我一无所获.怎么修?
Ken*_*ent 42
如果你试试:
echo "99%" |grep -o '[0-9]*'
Run Code Online (Sandbox Code Playgroud)
它返回:
99
Run Code Online (Sandbox Code Playgroud)
以下是grep手册页中-o
(或--only-matching
标志)的详细信息.
仅打印匹配线的匹配(非空)部分,每个此类部分位于单独的输出线上.输出行使用相同的分隔符作为输入,如果还使用-z( - null-data),则分隔符为空字节(请参阅其他选项).
grep
将打印与您提供的模式匹配的任何行.如果您只想打印与模式匹配的行部分,可以传递-o选项:
-o, - only-matching 仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上.
像这样:
echo 'Here is a line mentioning 99% somewhere' | grep -o '[0-9]+'
Run Code Online (Sandbox Code Playgroud)