举个例子:
$ du -h file_size.txt
112K file_size.txt
如何从du -h
的输出中删除文件名我曾尝试使用sed搜索字符串(文件名)并将其替换为空,但它没有用(下面的命令)
du -h file_size.txt | sed 's/ 'file_size.txt'//'
有人可以指出为什么这不起作用,或者更好的方法吗?
此致
保
答案 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'