Bash: pass multiline output of grep to another command that loops
up vote
1
down vote
favorite
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 |
up vote
1
down vote
favorite
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 |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
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
384720
384720
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
up vote
2
down vote
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 |
up vote
1
down vote
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 |
up vote
0
down vote
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
up vote
2
down vote
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 |
up vote
2
down vote
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 |
up vote
2
down vote
up vote
2
down vote
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.1k2930
10.1k2930
add a comment |
add a comment |
up vote
1
down vote
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 |
up vote
1
down vote
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 |
up vote
1
down vote
up vote
1
down vote
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
2,537423
2,537423
add a comment |
add a comment |
up vote
0
down vote
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 |
up vote
0
down vote
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 |
up vote
0
down vote
up vote
0
down vote
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 |
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