如何用Awk提取Kafka主题名及对应分区编号?
解决方案
方法一:使用awk实现
利用awk的字段处理特性,先提取最后一个字段作为分区号,再通过NF--保留前面的主题名称,最后按指定格式输出:
awk 'BEGIN{FS=OFS="-"} {part=$NF; NF--; printf "\"Topic: **%s**\" and his partition number: **%d**\n", $0, part}' /tmp/kafka.txt
执行后输出结果:
"Topic: **topic-with-num-in-name-1**" and his partition number: **4** "Topic: **topic-without-num-in-name**" and his partition number: **3**
方法二:使用sed实现
通过正则表达式匹配最后一个-分隔的数字作为分区号,前面的内容作为主题名,直接替换为目标格式:
sed -E 's/(.*)-([0-9]+)$/"Topic: **\1**" and his partition number: **\2**"/' /tmp/kafka.txt
该命令同样会输出符合要求的结果。
内容的提问来源于stack exchange,提问作者mocart
相关产品推荐
相关产品推荐

