получение уникальности от извлеченного grep заканчивается, НО с потоком как вход

На законченном входе (как файл) мы можем сделать это:

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

Вышеупомянутый вывод упрощен, я хотел выделиться, агрегирование такого вывода является моей основной проблемой.

0
задан 15 February 2019 в 04:02

1 ответ

рабочее решение:

$ tail -f infinite_server.log | grep -o memory=[3-9] > output &

затем

$ watch "cat output | sort -u"
0
ответ дан 26 October 2019 в 06:13

Другие вопросы по тегам:

Похожие вопросы: