Compare two variables and print the difference


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Compare two variables and print the difference
# 1  
Old 08-05-2019
Compare two variables and print the difference

Hi
PRIM_SEQ=`some sql code`
and output of PRIM_SEQ is like below
Code:
120
130

STB_SEQ=`some sql code`
and output of STB_SEQ is like below
Code:
115
110

i need to compare this two variables output ( decimal numbers)
1) What I want to do is to compare every number in the PRIM_SEQ with every number in the STB_SEQ and check, and print the difference between them

for example
PRIM_SEQ STB_SEQ
120 115
130 110

so output i am looking from above is
5
20

Last edited by RavinderSingh13; 08-05-2019 at 10:54 PM..
# 2  
Old 08-05-2019
Code:
set -A PRIM_SEQ `some sql code`
set -A STB_SEQ `some sql code`

for i in {0..${#PRIM_SEQ}}
do
   [[ -n "${PRIM_SEQ[i]}" && -n "${STB_SEQ[i]}" ]] && {
      (( x = PRIM_SEQ[$i] - STB_SEQ[$i] ))
      echo $x
   }
done

# 3  
Old 08-05-2019
i am getting error as below
Code:
tat.sh: line 33: {0..8}: syntax error: operand expected (error token is "{0..8}")
================================================================
below is my entire shell scrip and output of it when i run

PRIM_SEQ=`sqlplus -s "/ as sysdba" <<EOF
set heading off feedback off verify off
select max(sequence#) from gv\\$log group by thread#;
exit
EOF`
echo "====================================="
echo "PRIMARY_SEQUENCE of" DB_UNIQUE_NAME
echo "====================================="
echo $PRIM_SEQ
echo ""
STDBY_SEQ=`sqlplus -s sys/nobody@stdby as sysdba <<EOF
set heading off feedback off verify off
select max(sequence#) from gv\\$log group by thread#;
exit
EOF`
echo "====================================="
echo "STANDBY_SEQUENCE of DB" 
echo "====================================="
echo $STDBY_SEQ
echo ""
echo
for i in {0..${#PRIM_SEQ}}
do
   [[ -n "${PRIM_SEQ[i]}" && -n "${STB_SEQ[i]}" ]] && {
      (( x = PRIM_SEQ[$i] - STB_SEQ[$i] ))
      echo $x
   }
done


sh tat.sh

=====================================
PRIMARY_SEQUENCE of
=====================================
12072
11728

=====================================
STANDBY_SEQUENCE of
=====================================
12070
11700

tat.sh: line 33: {0..8}: syntax error: operand expected (error token is "{0..8}")


Last edited by RavinderSingh13; 08-05-2019 at 10:53 PM..
# 4  
Old 08-05-2019
try:
Code:
#!/bin/sh

PRIM_SEQ=(`some sql code`)
STB_SEQ=(`some sql code`)

c=0
for i in ${PRIM_SEQ[*]}
do
   (( x = PRIM_SEQ[c] - STB_SEQ[c] ))
   echo $x
   (( c = c + 1 ))
done

These 2 Users Gave Thanks to rdrtx1 For This Post:
# 5  
Old 08-06-2019
output i am getting as 200, instead of 170 see below

Code:
PRIM_SEQ=200
STDBY_SEQ=30
echo "====================================="
echo "PRIMARY_SEQUENCE of"
echo "====================================="
echo $PRIM_SEQ
echo "====================================="
echo "STANDBY_SEQUENCE" 
echo "====================================="
echo $STDBY_SEQ
echo ""
c=0
for i in ${PRIM_SEQ[*]}
do
   (( x = PRIM_SEQ[c] - STB_SEQ[c] ))
   echo $x
   (( c = c + 1 ))
done

output i am getting is 

=====================================
PRIMARY_SEQUENCE of
=====================================
200


=====================================
STANDBY_SEQUENCE of
=====================================
30

200

--- Post updated at 10:36 AM ---

sorry
PRIM_SEQ
200
100

STDBY_SEQ
50
20

SO OUTPUT I NEEDED IS
150
80

# 6  
Old 08-06-2019
Quote:
Originally Posted by amar1208
output i am getting as 200, instead of 170 see below

PRIM_SEQ=200
STDBY_SEQ=30
echo "====================================="
echo "PRIMARY_SEQUENCE of"
echo "====================================="
echo $PRIM_SEQ
echo "====================================="
echo "STANDBY_SEQUENCE"
echo "====================================="
echo $STDBY_SEQ
echo ""
c=0
for i in ${PRIM_SEQ[*]}
do
(( x = PRIM_SEQ[c] - STB_SEQ[c] ))
echo $x
(( c = c + 1 ))
done

output i am getting is

=====================================
PRIMARY_SEQUENCE of
=====================================
200


=====================================
STANDBY_SEQUENCE of
=====================================
30

200

--- Post updated at 10:36 AM ---

sorry
PRIM_SEQ
200
100

STDBY_SEQ
50
20

SO OUTPUT I NEEDED IS
150
80
Simple typo in variable name in your expression, try:

Code:
PRIM_SEQ=(200 100)
STDBY_SEQ=(50 20)
echo "====================================="
echo "PRIMARY_SEQUENCE of"
echo "====================================="
echo $PRIM_SEQ
echo "====================================="
echo "STANDBY_SEQUENCE"
echo "====================================="
echo $STDBY_SEQ
echo ""
c=0
for i in ${PRIM_SEQ[*]}
do
(( x = PRIM_SEQ[c] - STDBY_SEQ[c] ))
echo $x
(( c = c + 1 ))
done

This User Gave Thanks to Chubler_XL For This Post:
# 7  
Old 08-06-2019
Code:
PRIM_SEQ=(200 100)
STDBY_SEQ=(50 20)
above value actually i am getting with some sql code, below is my shell script code, values in variable into vertical line
not like horizontal (200 100) and  (50 20)


shell script code

PRIM_SEQ=`some sql code`
STDBY_SEQ=`some sql code`
echo $PRIM_SEQ
echo $STDBY_SEQ

so here output of PRIM_SEQ and STDBY_SEQ
i am getting output like  like below 
PRIM_SEQ
200
100

STDBY_SEQ
50
20

so output i am looking like below
150
80

--- Post updated at 11:57 AM ---

PRIM_SEQ=(200 100)
STDBY_SEQ=(50 20)
above value actually i am getting with some sql code, below is my shell script code, values in variable into vertical line
not like horizontal (200 100) and (50 20)


shell script code

PRIM_SEQ=`some sql code`
STDBY_SEQ=`some sql code`
echo $PRIM_SEQ
echo $STDBY_SEQ

so here output of echo PRIM_SEQ and STDBY_SEQ
i am getting output like like below 
PRIM_SEQ
200
100

STDBY_SEQ
50
20

so after subtract PRIM_SEQ - STDBY_SEQ,  output like below i am looking for it, please help
150
80

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Compare two variables and print the difference

compare two variables and print the difference i have two variables X1=rac1,rac2 Y1=rac2,rac3 output=rac1,rac3 Use code tags to wrap code fragments or data samples. (1 Reply)
Discussion started by: jhonnyrip
1 Replies

2. Shell Programming and Scripting

Simple awk command to compare two files and print first difference

Hello, I have two text files, each with a single column, file 1: 124152970 123899868 123476854 54258288 123117283 file 2: 124152970 123899868 54258288 123117283 122108330 (5 Replies)
Discussion started by: LMHmedchem
5 Replies

3. Shell Programming and Scripting

Compare file1 for matching line in file2 and print the difference in matching lines

Hello, I have two files file 1 and file 2 each having result of a query on certain database tables and need to compare for Col1 in file1 with Col3 in file2, compare Col2 with Col4 and output the value of Col1 from File1 which is a) not present in Col3 of File2 b) value of Col2 is different from... (2 Replies)
Discussion started by: RasB15
2 Replies

4. UNIX for Dummies Questions & Answers

compare / difference between sub-sections of files

Hi there, I'm sure this question has been asked many times but I can't find any posts with information. How can I check the differences between say lines 20 - 200 in file1 and lines 420 - 600 in file2? Thanks in advance for any help! js (2 Replies)
Discussion started by: js8765
2 Replies

5. Shell Programming and Scripting

Compare two columns in two files and print the difference

one file . . importing table employee 119 . . importing table jobs 1 2nd file . . importing table employee 120 . . importing table jobs 1 and would like... (2 Replies)
Discussion started by: jhonnyrip
2 Replies

6. Shell Programming and Scripting

Compare selected columns from a file and print difference

I have learned file comparison from my previous post here. Then, it is comparing the whole line. Now, i have a new problem. I have two files with 3 columns separated with a "|". What i want to do is to compare the second and third column of file 1, and the second and third column of file 2. And... (4 Replies)
Discussion started by: kingpeejay
4 Replies

7. Shell Programming and Scripting

Compare two files and print the two lines with difference

I have two files like this: #FILE 1 ABCD 4322 26485 JMTJ 5311 97248 XMPJ 4321 58978 #FILE 2 ABCD 4321 26485 JMTJ 5311 97248 XMPJ 4321 68978 What to do: Compare the two files and find those lines that doesn't match. And have a new file like this: #FILE 3 "from file 1" ABCD 4322 26485... (11 Replies)
Discussion started by: kingpeejay
11 Replies

8. Shell Programming and Scripting

Compare difference

Hi every body Help required file 1 aaaaa bbbb cccccc dddd ffff File 2 aaaaa,1,ee,44,5t,6y, cccccc, ..... dddd, ..... eeeeee, ..... ffff, ...... ggg, ....... (7 Replies)
Discussion started by: The_Archer
7 Replies

9. Shell Programming and Scripting

to compare two files and to print the difference

suppose one file P1168S P2150L P85L Q597R R1097C Another file P2150L P85L Q597R R1097C R1379C R1587K Then output shud be R1379C R1587K thanks (5 Replies)
Discussion started by: cdfd123
5 Replies

10. Shell Programming and Scripting

compare 2 file and print difference in the third file URG PLS

Hi I have two files in unix. I need to compare two files and print the differed lines in other file Eg file1 1111 2222 3333 file2 1111 2222 3333 4444 5555 newfile 4444 5555 Thanks In advance (3 Replies)
Discussion started by: evvander
3 Replies
Login or Register to Ask a Question