2012-11-16 7 views
10

Ich habe ein Programm, in dem ich Text aus einer Datei laden und dann nach einem der Felder filtern. Was mich interessiert, ist die Größe der Daten nach diesem Filterschritt.Verwenden Sie Rohr mit du zu berechnen "Größe" von Stdin

Idealerweise würde ich in der Lage sein, etwas zu tun: awk '$2>=10' <myfile | du -

Ich kann die Filter nur anwenden und die Ausgabe irgendwo speichern, rufe mich drauf, und dann die Datei löschen, aber die Datei ist recht groß, Das Schreiben auf die Festplatte könnte eine Weile dauern.

In der Erkenntnis, dass du für "Datenträgerverwendung" steht, vermute ich, dass ich etwas frage, das keinen Sinn ergibt, wenn man bedenkt, wie das Programm funktioniert. Wenn es ein anderes gebräuchliches Dienstprogramm gibt, das dies tut, schlagen Sie es bitte vor!

Antwort

17

Sie können es an wc -c leiten, um die Anzahl der Bytes zu zählen, die durch die Pipeline gehen.

4

du steht für "Datenträgerverwendung". Daten in einer Pipe treffen die Festplatte nicht, daher gibt es kein "du", mit dem man arbeiten kann. Verwenden Sie stattdessen wc, was "Wortzahl" ist.

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

Das Flag -c zählt Bytes.