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

嗨,我正在使用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'

这将返回输出为

>>SELECT substring(substring(tname from (1+locate('.',+>(1+locate('.',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;

现在我知道如何将整个输出存储到单个变量中并打印出来,但是我不知道如何将部分信息存储到变量中。 就像如果我只想将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('.','%'))
+>WHERE OPERATOR LIKE '%FILE_SCAN%';

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

TEST1

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

End of MXCI Session
/home/vivek:
kylin177 回答:仅将输出的一部分存储到shell变量中

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

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

TEST1

awk查找等于TAB_NAMES的行并存储该行号。接下来,它将打印一行,行号为stored no + 3

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

myvar=$(your_cmd | awk '/^TAB_NAME$/{n=NR} n && NR==n+3{print; exit}')
本文链接:https://www.f2er.com/3153355.html

大家都在问