如何从du -h输出的末尾删除文件名

时间:2010-02-11 19:32:42

标签: linux sed awk

举个例子:

$ du -h file_size.txt
112K file_size.txt

如何从du -h

的输出中删除文件名

我曾尝试使用sed搜索字符串(文件名)并将其替换为空,但它没有用(下面的命令)

du -h file_size.txt | sed 's/ 'file_size.txt'//'

有人可以指出为什么这不起作用,或者更好的方法吗?

此致

7 个答案:

答案 0 :(得分:13)

您在该命令行中有一些不好的引用。最简单的可能是:

du -h file_size.txt | cut -f -1

修复命令行:

du -h file_size.txt | sed 's/file_size.txt//'

由于您的帖子有awk标记:

du -h file_size.txt | awk '{ print $1 }'

答案 1 :(得分:9)

du -h file_size.txt | cut -f1

答案 2 :(得分:5)

简单输出第一列。这是awk解决方案

du -h test.txt  | awk '{ print $1 }'

答案 3 :(得分:0)

这有点冗长,但无论如何,这是你想要的另一种方式:

du -h file_size.txt |while read x junk; do echo $x; done

答案 4 :(得分:0)

@OP如果您的数据具有不同的字段,例如空格/制表符,那么更容易使用awk / cut等工具通过分隔符将它们分割到这些字段上。不需要使用正则表达式(例如sed)。更好的是使用shell。

各种方式

$ du -h file | awk '{print $1}'
4.0K

$ du -h file | cut -f1
4.0K

$ set -- $(du -h file) #using shell only
$ echo $1
4.0K

答案 5 :(得分:0)

你的原始命令会有效,除了你在sed regexp和du输出标签中包含一个空格。

答案 6 :(得分:0)

du -h的输出是[tab]分隔的。

du -h file_size.txt |sed 's/[\t].*//g'