Bash: pass multiline output of grep to another command that loops
I have the following command to grep the kafka topics
kafka-topics --list --zookeeper localhost:2181 | grep repartition
This give me a shell output with multiple topics
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
I need to provide these topics one by one to another command
kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic TOPIC_NAME
where TOPIC_NAME
is the topic(s) from the previous grep command. I was wondering if there is a way to combine them such that if the grep has some results (topics separated by newline) then the other command is executed in a loop with TOPIC_NAME
being each topic returned by grep
bash shell awk sed grep
add a comment |Â
I have the following command to grep the kafka topics
kafka-topics --list --zookeeper localhost:2181 | grep repartition
This give me a shell output with multiple topics
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
I need to provide these topics one by one to another command
kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic TOPIC_NAME
where TOPIC_NAME
is the topic(s) from the previous grep command. I was wondering if there is a way to combine them such that if the grep has some results (topics separated by newline) then the other command is executed in a loop with TOPIC_NAME
being each topic returned by grep
bash shell awk sed grep
add a comment |Â
I have the following command to grep the kafka topics
kafka-topics --list --zookeeper localhost:2181 | grep repartition
This give me a shell output with multiple topics
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
I need to provide these topics one by one to another command
kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic TOPIC_NAME
where TOPIC_NAME
is the topic(s) from the previous grep command. I was wondering if there is a way to combine them such that if the grep has some results (topics separated by newline) then the other command is executed in a loop with TOPIC_NAME
being each topic returned by grep
bash shell awk sed grep
I have the following command to grep the kafka topics
kafka-topics --list --zookeeper localhost:2181 | grep repartition
This give me a shell output with multiple topics
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
I need to provide these topics one by one to another command
kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic TOPIC_NAME
where TOPIC_NAME
is the topic(s) from the previous grep command. I was wondering if there is a way to combine them such that if the grep has some results (topics separated by newline) then the other command is executed in a loop with TOPIC_NAME
being each topic returned by grep
bash shell awk sed grep
bash shell awk sed grep
asked Nov 10 at 22:51
Fizi
425721
425721
add a comment |Â
add a comment |Â
3 Answers
3
active
oldest
votes
Use xargs
kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
add a comment |Â
You can use xargs -n1
for executing the one parameter at a time:
zookeeper="--zookeeper localhost:2181"
kafka-topics --list $zookeeper | grep repartition |
xargs -n1 kafka-topics $zookeeper --alter --config cleanup.policy=compact --topic
add a comment |Â
kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'
The sed-part of the command is prepending kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
(including the space at the end) to output of kafka-topics --list --zookeeper localhost:2181
. You can either redirect those commands to a file or redirect them to bash
to run them directly.
add a comment |Â
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use xargs
kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
add a comment |Â
Use xargs
kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
add a comment |Â
Use xargs
kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
Use xargs
kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
answered Nov 11 at 3:43
ssemilla
3,077424
3,077424
add a comment |Â
add a comment |Â
You can use xargs -n1
for executing the one parameter at a time:
zookeeper="--zookeeper localhost:2181"
kafka-topics --list $zookeeper | grep repartition |
xargs -n1 kafka-topics $zookeeper --alter --config cleanup.policy=compact --topic
add a comment |Â
You can use xargs -n1
for executing the one parameter at a time:
zookeeper="--zookeeper localhost:2181"
kafka-topics --list $zookeeper | grep repartition |
xargs -n1 kafka-topics $zookeeper --alter --config cleanup.policy=compact --topic
add a comment |Â
You can use xargs -n1
for executing the one parameter at a time:
zookeeper="--zookeeper localhost:2181"
kafka-topics --list $zookeeper | grep repartition |
xargs -n1 kafka-topics $zookeeper --alter --config cleanup.policy=compact --topic
You can use xargs -n1
for executing the one parameter at a time:
zookeeper="--zookeeper localhost:2181"
kafka-topics --list $zookeeper | grep repartition |
xargs -n1 kafka-topics $zookeeper --alter --config cleanup.policy=compact --topic
answered Nov 10 at 23:27
Walter A
10.3k2930
10.3k2930
add a comment |Â
add a comment |Â
kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'
The sed-part of the command is prepending kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
(including the space at the end) to output of kafka-topics --list --zookeeper localhost:2181
. You can either redirect those commands to a file or redirect them to bash
to run them directly.
add a comment |Â
kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'
The sed-part of the command is prepending kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
(including the space at the end) to output of kafka-topics --list --zookeeper localhost:2181
. You can either redirect those commands to a file or redirect them to bash
to run them directly.
add a comment |Â
kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'
The sed-part of the command is prepending kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
(including the space at the end) to output of kafka-topics --list --zookeeper localhost:2181
. You can either redirect those commands to a file or redirect them to bash
to run them directly.
kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'
The sed-part of the command is prepending kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
(including the space at the end) to output of kafka-topics --list --zookeeper localhost:2181
. You can either redirect those commands to a file or redirect them to bash
to run them directly.
answered Nov 10 at 23:01
Martin Urbanec
2818
2818
add a comment |Â
add a comment |Â
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid â¦
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid â¦
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53244208%2fbash-pass-multiline-output-of-grep-to-another-command-that-loops%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown