我有以下命令grep kafka主题
$wgHooks['UserLoginComplete'][] = 'onUserLoginComplete';
function onUserLoginComplete(User &$user, &$inject_html, $direct){
$_SESSION['mydata'] = 'some data';
}
这给了我一个包含多个主题的shell输出
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
是上一个grep命令的主题。我想知道是否有一种方法可以合并它们,以便如果grep产生了一些结果(主题用换行符分隔),则另一个命令将循环执行,TOPIC_NAME
是grep返回的每个主题
答案 0 :(得分:2)
您可以使用xargs -n1
一次执行一个参数:
zookeeper="--zookeeper localhost:2181"
kafka-topics --list ${zookeeper} | grep repartition |
xargs -n1 kafka-topics ${zookeeper} --alter --config cleanup.policy=compact --topic
答案 1 :(得分:1)
使用xargs
kafka-topics --list --zookeeper localhost:2181 | grep repartition | xargs -i kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic {}
答案 2 :(得分:0)
dispatchTouchEvent(ev: MotionEvent)
命令的sed部分在/**
* On each touch event:
* Check is [snackbar] present and displayed
* and dismiss it if user touched anywhere outside it's bounds
*/
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
// dismiss shown snackbar if user tapped anywhere outside snackbar
snackbar?.takeIf { it.isShown }?.run {
val touchPoint = Point(Math.round(ev.rawX), Math.round(ev.rawY))
if (!isPointInsideViewBounds(view, touchPoint)) {
dismiss()
snackbar = null // set snackbar to null to prevent this block being executed twice
}
}
// call super
return super.dispatchTouchEvent(ev)
}
的输出之前加上kafka-topics --list --zookeeper localhost:2181 | grep repartition | sed 's/^/kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic /g'
(包括末尾的空格)。您可以将这些命令重定向到文件,也可以将它们重定向到kafka-topics --zookeeper localhost:2181 --alter --config cleanup.policy=compact --topic
以直接运行它们。