Bash: передать многострочный вывод grep другой циклической команде - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть следующая команда для grep темы kafka

kafka-topics --list --zookeeper localhost:2181 | grep repartition

Это дает мне вывод оболочки с несколькими темами

dev-ALPHA_CLUSTER-investment.ed.store.alpha_cluster-repartition
dev-CUSTOM_GROUP-KSTREAM-REDUCE-STATE-STORE-0000000003-repartition
dev-CUSTOM_GROUP-investment.ed.store.custom_group-repartition

Мне нужно предоставить эти темы одну за другой команде

kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic TOPIC_NAME

где TOPIC_NAME - это раздел (ы) из предыдущей команды grep. Мне было интересно, есть ли способ объединить их так, что если у grep есть какие-то результаты (разделы, разделенные новой строкой), тогда другая команда выполняется в цикле с TOPIC_NAME, являющимся каждой темой, возвращаемой grep

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Вы можете использовать xargs -n1 для выполнения одного параметра за раз:

zookeeper="--zookeeper localhost:2181"
kafka-topics --list ${zookeeper} | grep repartition |
   xargs -n1 kafka-topics ${zookeeper} --alter --config cleanup.policy=compact --topic 
0 голосов
/ 11 ноября 2018

Использование xargs

kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic {}
0 голосов
/ 11 ноября 2018
kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'

Sed-часть команды добавляет kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic (включая пробел в конце) к выводу kafka-topics --list --zookeeper localhost:2181. Вы можете либо перенаправить эти команды в файл, либо перенаправить их на bash, чтобы запустить их напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...