2010-02-11 18 views
8

wziąć przykład:Jak usunąć nazwę pliku od końca du -h wyjściu

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

Jak mogę usunąć pliku z wyjścia du -h

Próbowałem użyć sed aby wyszukać ciąg (nazwa pliku) i zastąpić go z niczego, ale to hasnt robione (komenda niżej)

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

może ktoś proszę wskazać dlaczego to przyzwyczajenie praca, czy może lepszy sposób to zrobić?

Pozdrowienia

Paul

Odpowiedz

11

masz jakieś złe cytowanie w tej linii poleceń. Najprostszy jest prawdopodobnie:

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

naprawić swój wiersz polecenia:

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

Ponieważ post tag awk:

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

lub "du -h file_size.txt | sed 's/\ s +. * //' ' – Tomalak

+0

@Tomalak ma dobry pomysł na użycie' sed' - na pewno bije wpisując dwukrotnie nazwę pliku. –

+0

Woops, pojedyncze cudzysłowy, w których poprzedni z lewej ma wartość $ VARIABLE. Dzięki za pomoc, jak zawsze – paultop6

5

Proste wyjście pierwszej kolumnie. Oto rozwiązanie awk

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

+++ 1 :-) aus .at – Flavius

0

To jest trochę bardziej rozwlekły, ale w każdym razie jest to kolejny sposób na to, co chcesz:

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

@OP jeśli dane posiada odrębne obszary, na przykładowe spacje/tabulatory, a następnie łatwiejsze w użyciu narzędzia, takie jak awk/cut, aby podzielić je na te pola za pomocą ograniczników. Używanie regex (np. Sed) nie jest konieczne. Jeszcze lepiej jest po prostu używać powłoki.

różne sposoby

$ 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

Oryginalna komenda będzie pracował z wyjątkiem, że jesteś w tym miejsca w sed regexp i du wyjść karty.

0

Dane wyjściowe du -h są rozdzielane [tabulatorami].

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