使用 grep 提取信息

Extracting information with grep

在我的 Ubuntu 14.10 服务器上,我需要检查位于

的用户文件夹的大小

/home/docks/*userid*

我是一个 bash 新手,但我已经走到这一步了

du -csh /home/docks/userid | grep total 会 return,比方说,

16K total

现在我真的不在乎总数,所以我想 trim 更进一步,只得到 16K。我想在 shell 脚本中有一种相对简单的方法可以做到这一点。如果有人能告诉我具体方法,我将不胜感激。

一个简单的 awk 就可以完成这项工作,您不需要 grep。

du -csh /home/docks/userid | awk '/total/{print }'

du -csh /home/docks/userid | awk ' ~ /^total$/{print }'

du -csh /home/docks/userid | grep -oP '\S+(?=\s+total\b)'

\S+ 将匹配一个或多个非 space 字符。 (?=\s+total\b) 肯定前瞻,它断言匹配后必须跟有一个或多个 space 字符的字符串 total

当语言版本与英语不同并且 'total' 输出中的单词可能以其他语言显示时,您在计算用户文件夹的大小时可能会遇到问题。

一点 "hack" 防止这种情况(考虑到摘要总是打印在 du 输出的最后一行):

du -csh /home/docks/userid | tail -n 1 | cut -f1

或者您可以只使用:

du -sh /home/docks/userid | cut -f1