You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk/sed/perl一行命令从zookeeper-shell输出提取kafka主机名

提取kafka broker机器名的简洁单行命令方案

你原本的实现通过多轮sed替换特殊字符再拆分提取,逻辑可行但管道冗余,可通过以下单行命令实现同等效果:

方案1:单awk实现(优先推荐)

直接指定多分隔符完成字段拆分,匹配目标字段输出即可:

zookeeper-shell.sh 119.2.6.4 get /brokers/ids/1010 | awk -F '//|[:,"./ ]' '{for(i=1;i<=NF;i++) if($i ~ /kafka/i) print $i}' | sort -u
  • 用-F参数一次性将//、:、,、"、.、/、空格都设为字段分隔符,省略多轮sed替换步骤
  • 遍历所有字段匹配含kafka的内容输出,最后sort -u完成去重

方案2:sed+grep实现

用sed批量替换特殊字符为换行,直接匹配目标内容:

zookeeper-shell.sh 119.2.6.4 get /brokers/ids/1010 | sed 's/[":,/ .]/\n/g' | grep -i '^kafka' | sort -u
  • 单轮sed将所有需要拆分的特殊字符统一替换为换行符
  • grep直接过滤以kafka开头的行,忽略大小写

方案3:perl最短实现

通过正则全局匹配目标格式的主机名:

zookeeper-shell.sh 119.2.6.4 get /brokers/ids/1010 | perl -nle 'print $& while /kafka[a-z0-9]*/ig' | sort -u
  • 适合主机名格式为kafka+数字/字母的固定场景,无需拆分字段直接正则匹配提取

内容的提问来源于stack exchange,提问作者Judy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:15:01