hi i am using a bash script. here i execute this code.
/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'
This will return a output as
>>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;
Now i know how to store this entire output into a single variable and print it But i am not able to figure out how to store partial information into variable. Like if i want to store only TEST1 into the variable, what should i do.
Thanks in advance
The output of the varaible Test
/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:
Advertisement
Answer
You can pipe your output to this awk:
your_cmd | awk '/^TAB_NAME$/{n=NR} n && NR==n+3{print; exit}'
TEST1
This awk looks for a line that is equal to TAB_NAMES and stores that line no. Following which it prints a line whose line no is stored no + 3.
To store this shown value in a variable use:
myvar=$(your_cmd | awk '/^TAB_NAME$/{n=NR} n && NR==n+3{print; exit}')