Используйте трубу с du для вычисления "размера" stdin

У меня есть программа, в которой я загружаю текст из файла, а затем фильтрую его в соответствии с одним из полей. Меня интересует размер данных после этого этапа фильтрации.

В идеале я мог бы сделать что-то вроде: awk '$2>=10' <myfile | du -

Я мог бы просто применить фильтр и сохранить выход где-нибудь, вызвать du на нем, а затем удалить файл, но файл довольно большой, поэтому запись на диск может занять некоторое время.

Признавая, что du означает "использование диска", я подозреваю, что задаю то, что не имеет смысла, учитывая, как работает программа. Если есть еще одна общая утилита, которая сделает это, предложите ее!

Ответ 1

Вы можете передать его на wc -c, чтобы подсчитать количество байтов, проходящих через конвейер.

Ответ 2

du означает "использование диска". Данные в трубе не попадают на диск, поэтому нет "дю" для работы. вместо этого используйте wc, что означает "количество слов".

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

Флаг -c подсчитывает байты.