2012-11-16 15 views
10

Mam program, w którym ładuję tekst z pliku, a następnie filtruje go zgodnie z jednym z pól. Interesuje mnie rozmiar danych po tym etapie filtrowania.Użyj rury z du, aby obliczyć "rozmiar" stdin

Idealnie, byłbym w stanie zrobić coś takiego: awk '$2>=10' <myfile | du -

może po prostu zastosować filtr i zapisać wyjście gdzieś zadzwonić du na nim, a następnie usunąć plik, ale plik jest dość duży, więc zapisanie na dysku może trochę potrwać.

Rozpoznawanie, że du oznacza "użycie dysku", podejrzewam, że pytam o coś, co nie ma sensu, biorąc pod uwagę sposób działania programu. Jeśli istnieje inne typowe narzędzie, które to zrobi, zasugeruj to!

Odpowiedz

17

Możesz przepuścić ją do wc -c, aby policzyć liczbę bajtów przesyłanych przez potok.

4

du oznacza "użycie dysku". Dane w potoku nie trafiają na dysk, więc nie ma "du" do pracy. zamiast tego użyj wc, czyli "liczba słów".

awk '$2>=10' < myfile | wc -c 

Flaga -c zlicza bajty.