в потоке урлы, или любую другую инфу, хочу парсить из её вывода grep'ом все URL и отправлять их потоков на APIшку curl'ом, но если я юзаю обычный grep, то всегда получаю пустую строку. Как можно парсить грепом динамически обновляющуюся информацию и в случае нахождения тут же её отправлять?
Такое к сожалению работает только со статичной строкой:
dynamic-url-ouput| grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | {read url; curl -X POST http://api.com/api/servers/add \
-H 'Content-Type: application/json'\
-d '{"url":"'$url'"}'}
У тя два момента минимум: 1. стандартный вывод буферизованный, и грепаться может далеко не сразу начать, только после заполнения этого буфера 2. последнее у тебя читает только одну строку, нужно while read url ; do … done Первое частично можно вылечить
Срезать ему буффер. stdbuff... Не помню точно флаги, но все три ставишь в ноль и всё работает
Обсуждают сегодня