На законченном входе (как файл) мы можем сделать это:
cat file | grep -o memory=[3-9] | sort -u
Но sort
не будет работать с потоком:
tail -f server.log | grep -o memory=[3-9] | sort -u
server.log
может быть бесконечный поток (оперативный журнал). Выше команды может прошлые часы.
как может я итоговые результаты, добавляющие другой инструмент в канал или делающие так или иначе это sort
будет работать?
ИЛИ:
что альтернатива, вместо grep
, иметь захват там, но также и передачу аргумента в следующий шаг - следующий инструмент канала. Я не уверен, позволит ли канал это, вообще.
возможно, вторая часть канала должна быть объединенной (как что-то делающее grep+sort сразу)
Мне только интересно с подходом командной строки к этому.
Это могло быть что-то как watch
, но обновляя предыдущий результат.
На примере: Вместо того, чтобы видеть много строк как:
memory=4
memory=4
memory=4
memory=4
memory=2
...
Я хочу видеть просто:
memory=4
memory=2
Вышеупомянутый вывод упрощен, я хотел выделиться, агрегирование такого вывода является моей основной проблемой.
рабочее решение:
$ tail -f infinite_server.log | grep -o memory=[3-9] > output &
затем
$ watch "cat output | sort -u"