我在运行
echo "dis clusqmgr(*) suspend"|runmqsc QMGR1
获得以下输出,但我想删除其中一些。我尝试使用 egrep
和 cut
但无法获得所需的结果。
原始输出:
1 : dis clusqmgr(*) suspend
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(GWD1) CHANNEL(TO.GWD1.SSL)
CLUSTER(CLUSD) SUSPEND(NO)
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(GWD2) CHANNEL(TO.GWD2.SSL)
CLUSTER(CLUSD) SUSPEND(NO)
期望的输出:
CLUSQMGR(GWD1) SUSPEND(NO)
CLUSQMGR(GWD2) SUSPEND(NO)
我用来实现此目的的命令:
echo "dis clusqmgr(*) suspend"|runmqsc QMGR1|egrep 'CLUSQMGR|SUSPEND'| tr ')' '\n' | grep "CLUSQMGR(" | cut -f 2 -d ")"
最佳答案
$ cat t.txt
1 : dis clusqmgr(*) suspend
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(GWD1) CHANNEL(TO.GWD1.SSL)
CLUSTER(CLUSD) SUSPEND(NO)
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(GWD2) CHANNEL(TO.GWD2.SSL)
CLUSTER(CLUSD) SUSPEND(NO)
.
$ awk '/^CLUSQMGR/{clusqmgr=$1;t=1}t&&/^CLUSTER/{t=0;print clusqmgr, $2}' t.txt
CLUSQMGR(GWD1) SUSPEND(NO)
CLUSQMGR(GWD2) SUSPEND(NO)
所以
$ echo "dis clusqmgr(*) suspend" | runmqsc QMGR1 | awk '/^CLUSQMGR/{clusqmgr=$1;t=1}t&&/^CLUSTER/{t=0;print clusqmgr, $2}'
应该会产生您想要的结果。
关于shell - 从 shell 中的两行中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262075/