如何通过SED从MQ通道查询输出中提取CHLTYPE与MCAUSER字段
解决MQ通道字段提取问题
原命令失效的核心原因是:runmqsc输出中,CHLTYPE和MCAUSER是分两行显示的,而你用的sed命令要求两个字段在同一行才能匹配,自然提取不到内容。
以下是几种可行的解决方法:
方法1:grep提取+paste合并
直接过滤出包含目标字段的两行,再合并为一行:
echo 'dis CHANNEL(SYSTEM.DEF.SVRCONN)' | runmqsc QREP311 | grep -E 'CHLTYPE|MCAUSER' | paste -d' ' - -
方法2:awk缓存字段后输出
用awk记录第一个字段的内容,遇到第二个字段时一起打印:
echo 'dis CHANNEL(SYSTEM.DEF.SVRCONN)' | runmqsc QREP311 | awk '/CHLTYPE/{c=$0} /MCAUSER/{print c, $0}'
方法3:精准匹配目标通道(避免其他干扰)
如果输出中有其他通道的信息,可增加过滤逻辑,只处理SYSTEM.DEF.SVRCONN的内容:
echo 'dis CHANNEL(SYSTEM.DEF.SVRCONN)' | runmqsc QREP311 | awk ' /SYSTEM.DEF.SVRCONN/{in_chan=1} in_chan && /CHLTYPE/{c=$0} in_chan && /MCAUSER/{print c, $0; exit}'
以上方法都能输出你期望的格式:CHLTYPE(SVRCONN) MCAUSER( )
内容的提问来源于stack exchange,提问作者user3590915
相关产品推荐
相关产品推荐

