Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从shell中的输出中的两行中选择不同的值_Shell_Grep_Tr - Fatal编程技术网

从shell中的输出中的两行中选择不同的值

从shell中的输出中的两行中选择不同的值,shell,grep,tr,Shell,Grep,Tr,我使用runmqsc命令获得如下输出。但我想去掉一些。我正在使用egrep和cut,但没有得到所需的结果 Runmqsc命令:echo“dis clusqmgr(*)suspend”| Runmqsc QMGR1 原始输出: 1 : dis clusqmgr(*) suspend AMQ8441: Display Cluster Queue Manager details. CLUSQMGR(GWD1) CHANNEL(TO.GWD1.SSL) CLU

我使用runmqsc命令获得如下输出。但我想去掉一些。我正在使用egrep和cut,但没有得到所需的结果

Runmqsc命令:echo“dis clusqmgr(*)suspend”| Runmqsc QMGR1

原始输出:

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 ")"

请提供帮助。

将输出传输到以下位置的一种方法:

egrep 'CLUSQMGR|SUSPEND' | paste - - | awk '{print $1, $4}'
egrep -o '\b(CLUSQMGR|SUSPEND)\S+' | paste - -
比如说,

egrep 'CLUSQMGR|SUSPEND' filename | paste - - | awk '{print $1, $4}'
其中
filename
包含您发布的原始输入,您将生成:

CLUSQMGR(GWD1) SUSPEND(NO)
CLUSQMGR(GWD2) SUSPEND(NO)

另一种方法是通过管道将命令输出传输到:

egrep 'CLUSQMGR|SUSPEND' | paste - - | awk '{print $1, $4}'
egrep -o '\b(CLUSQMGR|SUSPEND)\S+' | paste - -

边界参数是什么?我假设任何带有冒号的行都应该被忽略,任何CLUSQMGR行的第一个条目和任何挂起行的最后一个条目都应该合并并打印。以下内容只有在同时出现时才能正常工作,并且始终按此顺序出现:

runmqsc QMGR1 <<<'dis clusqmgr(*) suspend' |
awk '/:/ { g=""; next }
    /CLUSQMGR/ { g=$1; next }
    /SUSPEND/ { print g, $NF; g="" }'
runmqsc QMGR1