2010-02-11 47 views
8

採取例如:如何從杜-h輸出的末尾刪除文件名

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

我怎麼會從輸出中刪除的文件名杜-h

我曾嘗試使用sed的搜索字符串(文件名),並沒有取代它,但它未工作(以下命令)

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

可能有人請指出爲什麼這不會工作,或者更好的方式來做到這一點?

問候

保羅

回答

11

你必須在命令行中一些不好的報價。最簡單的大概是:

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 }' 
+2

或'du -h file_size.txt | sed's/\ s +。* //'' – Tomalak 2010-02-11 19:37:48

+0

@Tomalak對於使用'sed'有正確的想法 - 確保輸入文件名兩次。 – 2010-02-11 19:39:14

+0

Woops,這是我之前剩下的一個$ VARIABLE的單引號。感謝您一如既往的幫助 – paultop6 2010-02-11 19:50:11

9
du -h file_size.txt | cut -f1 
+0

是的!三年後幫助人們! – Tastybrownies 2013-02-09 06:56:44

5

簡單輸出的第一列。這裏是awk的解決方案

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

+++ 1 :-) aus .at – Flavius 2010-02-11 20:34:50

0

這是一個有點冗長,但在任何情況下,這是另一種你想要什麼:

du -h file_size.txt |while read x junk; do echo $x; done 
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 
0

你原來的命令將除了要包括在sed的正則表達式的空間都工作過,杜輸出選項卡。

0

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

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