'Use pipe with du to compute "size" of stdin

I have a program in which I load text from a file and then filter it according to one of the fields. What I am interested in is the size of the data after this filtering step.

Ideally, I would be able to do something like: awk '$2>=10' <myfile | du -

I could just apply the filter and save the output somewhere, call du on it, and then delete the file, but the file is quite large, so writing to disk could take a while.

Recognizing that du stands for "disk usage", I suspect I am asking something that makes no sense, given how the program works. If there is another common utility that will do this, please suggest it!



Solution 1:[1]

du stands for "disk usage". Data in a pipe doesn't hit the disk, so there's no "du" to work with. use wc instead, which is "word count".

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

The -c flag counts bytes.

Solution 2:[2]

In zsh, you can:

du -h =(cat myfile)

The output in =(...) will be saved in a temporary file, and the path of that file will replace =(...). The file will be deleted after the completion of the command.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dag Høidahl
Solution 2 HappyFace