Linux 仅将部分输出存储到shell变量中

Linux 仅将部分输出存储到shell变量中,linux,bash,sh,Linux,Bash,Sh,嗨,我正在使用bash脚本。 这里我执行这个代码 /usr/bin/mxci <<EOF SELECT substring(substring(tname from (1+locate('.',tname))), (1+locate('.',substring(tname from (1+locate('.',tname))))),15 ) as TAB_NAME FROM table(explain('/home/vivek/MFCABS1031VCAT.VSCH.A9B69395

嗨,我正在使用bash脚本。 这里我执行这个代码

/usr/bin/mxci <<EOF
SELECT substring(substring(tname from (1+locate('.',tname))),
(1+locate('.',substring(tname from (1+locate('.',tname))))),15 ) as TAB_NAME
FROM table(explain('/home/vivek/MFCABS1031VCAT.VSCH.A9B69395AE3238A4184A90CD1F28C161', '%'))
WHERE OPERATOR LIKE '%FILE_SCAN%';
EOF'
现在我知道如何将整个输出存储到单个变量中并将其打印出来,但我不知道如何将部分信息存储到变量中。 比如,如果我只想将TEST1存储到变量中,我应该怎么做

提前谢谢

变量测试的输出

/home/vivek: echo "$test"
Hewlett Packard Enterprise NonStop(TM) SQL/MX Conversational Interface 3.7
(c) Copyright 2003-2019 Hewlett Packard Enterprise Development LP.
>>SELECT substring(substring(tname from (1+locate('.',tname))),
+>(1+locate('.',substring(tname from (1+locate('.',tname))))),15 ) as TAB_NAME
+>FROM table(explain('/home/vivek/MFCABS1031VCAT.VSCH.A9B69395AE3238A4184A90CD1F28C161', '%'))
+>WHERE OPERATOR LIKE '%FILE_SCAN%';

TAB_NAME
---------------

TEST1

--- 1 row(s) selected.
>>exit;

End of MXCI Session
/home/vivek:

您可以通过管道将输出传输到此awk:

your_cmd | awk '/^TAB_NAME$/{n=NR} n && NR==n+3{print; exit}'

awk
查找与
TAB_NAMES
相等的行,并存储该行号。随后,它将打印行号为
存储号+3
的行

要将此显示值存储在变量中,请使用:

myvar=$(your_cmd | awk '/^TAB_NAME$/{n=NR} n && NR==n+3{print; exit}')

mxci
是否提供了避免输出人性化(但与机器无关)表的选项?可能
echo“$TEST”| sed-ne'/^-/,/^-/p'
对于延迟响应表示抱歉。我按照你的建议试过了,但没用。我将值存储在$test中,然后像这样使用管道/home/vivek:echo“$test”| awk'/^TAB_NAME$/{n=NR}n&&NR==n+3{print;exit}'/home/vivek:/home/vivek:echo“$test”惠普企业不间断(TM)SQL/MX对话接口3.7(c)版权所有2003-2019年惠普企业开发有限合伙公司>>从表(explain('/home/vivek/MFCABS1031VCAT.VSCH.A9B69395AE3238A4184A90CD1F28C161','%”)中选择子字符串(子字符串(子字符串(tname from(1+locate('.',tname'))、+>(1+locate('.',子字符串(tname from(1+locate('.',tname('))))))、子字符串(tname from(15)作为选项卡名+>)+>(explain('/home/vivek/MFCABS1031VCAT.VSCH.a9b69395ae3238a4184a;选项卡\u名称------------------TEST1---1行已选定。>>出口MXCI会话结束/home/vivek:我对输入运行了这个
awk
命令,并在输出中得到了
TEST1
。您可以看到它在这里工作:
TEST1
myvar=$(your_cmd | awk '/^TAB_NAME$/{n=NR} n && NR==n+3{print; exit}')