Joh*_*ohn 2 python linux bash shell grep
我发现了一些其他解决方案,例如:
df -Ph /oracle/archive | awk 'NR == 2{print $5}' | tr -d '%'
但它们似乎有点太多了,我认为存在更优雅的东西,因为我将直接传递到subprocess.check_output()in python2.7。
下面是一个输出示例df:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 7508524 4890644 2258240 69% /
Run Code Online (Sandbox Code Playgroud)
我只想获得69价值。
谁能帮我吗?
非常感谢
statvfs将提供分区上空闲或可用块的信息,而无需调用子进程:
>>> import os
>>> st = os.statvfs('/')
>>> (st.f_blocks - st.f_bavail) / st.f_blocks
0.692345901307951
Run Code Online (Sandbox Code Playgroud)
$ df -Ph /oracle/archive | awk 'NR == 2{print $5+0}'
69
Run Code Online (Sandbox Code Playgroud)
awk 会将其视为$5字符串。通过向其添加零,我们强制 awk 将其转换为数字,从而消除了%.
df -Ph /oracle/archive | grep -Po '\d+(?=%)'
69
Run Code Online (Sandbox Code Playgroud)
-o告诉 grep 仅打印匹配的字符串。 \d+(?=%)查找后面跟随%但不包含%在匹配中的数字。
这需要-Pgrep 选项,而 grep 则需要 GNU grep。
尝试
echo $(df --output=pcent /oracle/archive) | tr -d 'Use% '
Run Code Online (Sandbox Code Playgroud)
--output=pcent 选项仅选择已使用的百分比字段。但是它也打印标题。
echo 命令将输出展平为单个字符串。
tr 命令删除不需要的字符,如标题、前导空格和百分号。
| 归档时间: |
|
| 查看次数: |
7521 次 |
| 最近记录: |