使用 grep、sed 等完成简单任务

使用 grep、sed 等完成简单任务

的输出du -sh folder是一些维度和文件夹;我如何使用grep -o '*G'与获取维度类似的功能,即删除文件夹名称?

答案1

我可以提供一个简单的cut解决方案:

du -sh . | cut -f1

标准分隔符cut是制表符,因此不需要任何其他选项。只需打印字段 1。

从您的评论来看,您似乎关心资源/速度,因此引用吉尔斯的另一个答案:

“一般来说,工具越专业,速度就越快。因此,在大多数情况下,您可以期望cutgrep比 更快sed,并且sed比 更快awk。”

引自这里

time这两个命令的输出显示:

time du -sh /folder | awk '{print $1}'
60K

real    0m0.005s
user    0m0.002s
sys     0m0.004s

time du -sh /folder | cut -f1
60k

real    0m0.003s
user    0m0.000s
sys     0m0.004s

我相信你需要重复多次,并取平均值才能使其成为一个公平的测试,但无论哪种方式,其中的内容都不多。从技术上来说削减应该是“更快”。

答案2

您可以使用 awk 仅打印第一列:

du -sh folder | awk '{print $1}'

对于文件,也使用 awk:

awk '!($3="")' file

相关内容