linux - Bash TreeSize 脚本 - 改进的输出对齐
问题描述
鉴于下面的脚本
#/bin/sh
echo
echo treesize of `pwd` at `date +"%Y-%m-%d %H:%M:%S"`
echo
du -k --max-depth=1 | sort -nr | awk '
BEGIN {
split("KB,MB,GB,TB", Units, ",");
}
{
u = 1;
while ($1 >= 1024) {
$1 = $1 / 1024;
u += 1
}
$1 = sprintf("% *d%.1f %s", (7-length(sprintf("%.1f", $1))), 0, $1, Units[u]);
print $0;
}
'
echo
得到以下输出:
treesize of /home/jonathan at 2020-04-08 10:18:50
0295.4 GB .
0175.6 GB ./Documents
0118.5 GB ./vmware
047.9 MB ./Desktop
032.0 KB ./Pictures
012.0 KB ./Videos
04.0 KB ./.Public
请问如何删除前导 0 并使用空格?欣赏剧本!归功于互联网上的某人:)
解决方案
利用sed
sed 's#^[[:space:]]*0# #g'
^
-- 行
[[:space:]]
首 <- 空格字符
*
<- 0 次或多次出现
#/bin/sh
echo
echo treesize of `pwd` at `date +"%Y-%m-%d %H:%M:%S"`
echo
du -k --max-depth=1 | sort -nr | awk '
BEGIN {
split("KB,MB,GB,TB", Units, ",");
}
{
u = 1;
while ($1 >= 1024) {
$1 = $1 / 1024;
u += 1
}
$1 = sprintf("% *d%.1f %s", (7-length(sprintf("%.1f", $1))), 0, $1, Units[u]);
print $0;
}' | sed 's#^[[:space:]]*0# #g'
echo
推荐阅读
- reactjs - 如何渲染在 React 中作为子级传递的 JSX?
- java - 无法为表连接映射平面对象
- xml - 如何使用 XML::XPath 获取属性?
- reactjs - 允许与开放模式交互(React 和 Material UI)
- python - python字符串去除字符
- javascript - 如何在 JSDoc 中描述其他未知属性
- reactjs - 点击选项卡导航中的图标以滚动到列表顶部在 react-native 中不起作用
- php - 如何在 wordpress 网站上将访客用户变成注册用户
- c - 使用 CreateThreadpoolWork/SubmitThreadpoolWork 时向回调函数传递不同的值
- postgresql - 我的查询未显示所需结果并在未知情况下省略了值