2008-10-27 25 views
8

Jak obciąć dane wyjściowe w BASH?Obcięcie wyjścia w BASH

Na przykład, jeśli "du file.name", jak mogę po prostu uzyskać wartość liczbową i nic więcej?

późniejsze dodawanie:
wszystkie rozwiązania działają doskonale. Zdecydowałem się przyjąć najbardziej rzucającą się w oczy odpowiedź "cut", ponieważ wolę najprostsze podejście w plikach bash, które inni powinni przeczytać.

Odpowiedz

11

Jeśli wiesz co separatory są następnie cięte jest twoim przyjacielem

du | cut -f1 

Cut domyślnie ograniczników zakładce więc w tym przypadku zaznaczania pierwsze pole.

Możesz zmienić ograniczniki: cut -d "" użyje spacji jako ogranicznika. (Od Tomalak)

Można też wybrać poszczególne pozycje lub zakresy znaków:

ls | cut -c1-2 
+2

Możesz dodać coś w rodzaju "cut-d" -f 1-2 ", aby wskazać, jak zmienić znaki, których używasz jako ograniczników. – Tomalak

6
du | cut -f 1 
+0

bicie mnie do tego przez 20 sekund :) – Ken

+0

Pokonaj mnie przez 30 sekund :) Usunąłem duplikat odpowiedzi i zamiast tego dodałem alternatywną odpowiedź. –

+0

Wolałbym więcej informacji o ogranicznikach i zakresach, ponieważ używał on tylko du jako przykładu. Wtedy z chęcią usuwam też :) – Ken

10

ja polecam wyciąć, jak mówili inni. Ale inna alternatywa, która jest czasami przydatne, ponieważ pozwala ona wszystkie spacje jako separatory, jest użycie awk:

du file.name | awk '{print $1}' 
+0

+1 Jeśli separatorem może być dowolny biały znak, to awk jest najsolidniejszym rozwiązaniem (nawet jeśli nie jest tak piękne, jak w przypadku cięcia). –

1

Jeśli chcesz tylko liczbę bajtów w jednym pliku, użyj operatora -s.

SIZE=-s file.name 

To daje inną liczbę niż du, ale nie jestem pewien, jak dokładnie używasz tego produktu.

Ma to tę zaletę, że nie trzeba uruchamiać du, a po uzyskaniu bash uzyskać bezpośrednio rozmiar pliku.

Ciężko odpowiedzieć na takie pytania w próżni, ponieważ nie wiemy, w jaki sposób zamierzasz korzystać z danych. Wiedząc, że może to sugerować zupełnie inną odpowiedź.

+0

W pierwotnym pytaniu powiedział, że używanie du było tylko przykładem; twoja odpowiedź nie pomaga w jego pytaniu (chociaż może być w rzeczywistości użyteczne dla niego, jeśli jego przykład nie był tylko hipotetyczny) –

+0

Nie czytam tego jako "du był tylko przykładem". –

+0

Jak obciąć dane wyjściowe w BASH? Na przykład, jeśli "du file.name" ... – Ken

Powiązane problemy