Report a missing property and property value mis match script.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Report a missing property and property value mis match script.
# 1  
Old 08-23-2011
Report a missing property and property value mis match script.

Hi All,

I have 2 properties files - one is a master templete and other one is a node specific properties file, I need to comapre these 2 properties files and make sure the node Specific properties file contains all the properties in the master temple properties file else report the missing property
and secondly
if value provided in the master template then same value must be in the node specific file if not report mismatch

here are the 2 example property files :

1. master-templete.properties
## Proxy name
jboss.proxy.name=

## PTMS Database
db.host.1=
db.port.1=1521
db.host.2=
db.port.2=1521

#EOF

2.nodeOne.properties
## Proxy name

## PTMS Database
db.host.1=10.3.61.55
db.port.1=1521
db.host.2=10.3.61.55
db.port.2=1521


#EOF
# 2  
Old 08-23-2011
Code:
awk -v MASTER="/path/to/master.file" -v FS="=" 'BEGIN {
        while(getline <MASTER)
        {
                if ( ($0 ~ /^[ \t]*#/) || ($0 == "") ) continue;

                if($2 != "")
                        SET[$1]=$2
        }
}

{
        if (!($0 ~ /^[ \t]*#/) && !($0 == "") )
        if(SET[$1] && (SET[$1] != $2))
                print "ERROR " $0;
}' < /path/to/local.file

---------- Post updated at 12:51 PM ---------- Previous update was at 12:34 PM ----------

Improved version:
Code:
awk -v FS="=" -v MASTER="/path/to/master" 'BEGIN { while(getline <MASTER)
        {
                if (($0 ~ /^[ \t]*#/) || ($0 == "")) continue;
                INMASTER[$1]=1;         VAL[$1]=$2;
        }
}

{       if (!($0 ~ /^[ \t]*#/) && !($0 == "") ) LOCAL[$1]=$2;   }

END {   for(k in INMASTER)
        {
                if((VAL[k] == "") && (LOCAL[k] == ""))  print "UNSET " k;
                if((VAL[k]!="") && (LOCAL[k] != VAL[k])) print "OVERRIDDE " k;
        }
}' < /path/to/local

With your input data, and db.port.2=1521 modified to 1522, I get:

Code:
UNSET jboss.proxy.name
OVERRIDDE db.port.2

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 08-24-2011
When I try to run the script below :
I keep getting the following error , I am not sure what I am doing wrong ..
Please help ...

awk: syntax error near line 1
awk: bailing out near line 1

Note : My properties file "master-templete.properties " and "nodeOne.properties" are in teh same directory as the script.

awk -v FS="=" -v MASTER="master-templete.properties" 'BEGIN { while(getline <"MA
STER")
{
if (($0 ~ /^[ \t]*#/) || ($0 == "")) continue;
INMASTER[$1]=1; VAL[$1]=$2;
}
}
{ if (!($0 ~ /^[ \t]*#/) && !($0 == "") ) LOCAL[$1]=$2; }
END { for(k in INMASTER)
{
if((VAL[k] == "") && (LOCAL[k] == "")) print "UNSET " k;
if((VAL[k]!="") && (LOCAL[k] != VAL[k])) print "OVERRIDDE " k;
}
}' < nodeOne.properties
# 4  
Old 08-24-2011
Use gawk/nawk.

That "MASTER" should be just MASTER -- you aren't trying to read from a file named "MASTER" after all, but a variable named MASTER with a filename in it.
# 5  
Old 08-24-2011
Thank you .
Now nawk works , it doesn't do anything just hangs now.
# 6  
Old 08-24-2011
Hmm. This should print info as it goes, hopefully telling you where it freezes:

Code:
nawk -v FS="=" -v MASTER="/path/to/master" 'BEGIN { 
print "running BEGIN";
while(getline <MASTER)
        {
                if (($0 ~ /^[ \t]*#/) || ($0 == "")) continue;
                INMASTER[$1]=1;         VAL[$1]=$2;
                print $0;
        }
        print "BEGIN finished"
}

{       if (!($0 ~ /^[ \t]*#/) && !($0 == "") ) LOCAL[$1]=$2;   } 1

END {   for(k in INMASTER)
        {
                if((VAL[k] == "") && (LOCAL[k] == ""))  print "UNSET " k;
                if((VAL[k]!="") && (LOCAL[k] != VAL[k])) print "OVERRIDDE " k;
        }
}' < /path/to/local

Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Not to remove Files based on property value

Hi All, Need your help to fix one script. Main agenda is: 1. Read a property file. 2. Delete all files in directory except the name from Property file. I am trying to read property file for value then deleting all files from directory except THAT value/name. I have tried so far as... (3 Replies)
Discussion started by: sukhdip
3 Replies

2. Shell Programming and Scripting

Reading a property file through shell script???

Hi! i need a script that can read a property file. i.e., A script to read a "property" from property file. Read the property value and based on value of property, decide whether to start the some dataload activity or not. Its urngent. Can anyone help me out???:( (7 Replies)
Discussion started by: sukhdip
7 Replies

3. Shell Programming and Scripting

To read xml value depending on property

Hi have some xml like this <example> <Cell Name="Cell1" ConfigureHost="claas" Role="APPSERV,BACKEND"> <Node Name="aaaaa" Role="APPSERV,BACKEND,CLM"/> <Node Name="vvvv" Role="APPSERV,BACKEND"/> <Mercury Type="default" FQDN="ssssss" PrimaryReturnFQDN=""/> </Cell> ... (1 Reply)
Discussion started by: javaholics
1 Replies

4. Shell Programming and Scripting

Script to update Property Entry Values

Hi All, I'm Raghavendra. I have a very urgent requirement to develop a Shell Script which will allow to use variables in a property file as demonstarted below var1=UNIX var2=LINUX var3=WINDOWS var4=$var1,$var2 var5=$var3 Could you please help me to develop a shell script which can... (2 Replies)
Discussion started by: raghavstunner
2 Replies

5. Shell Programming and Scripting

URGENT: Script/Function needed to read text property files in block wise

Hi, Iam in a need for a script/function in KSH where I want to read a text file (property file) in block by block. Here is the example: Heading Name Descripton Block Block1 Value1 Description Property Name Value Property Name Value Property Name Value Property Name Value Property Name... (7 Replies)
Discussion started by: ysreenivas
7 Replies

6. Shell Programming and Scripting

source a property file in script give error

I have sourced a property file in my script like this to load some variables in the script Then i am able to echo all the property file values inside script but the script is not able to recognize other unix commands #!/bin/bash . build.properties mkdir build i am getting error ... (3 Replies)
Discussion started by: codeman007
3 Replies

7. Shell Programming and Scripting

Problem printing the property of xml file via shell script

Hi, I have a config.xml which cointains the tags like <CONFIG> <PROPERTY name="port" value="1111"/> <PROPERTY name="dbname" value="ABCDE"/> <PROPERTY name="connectstring" value="xyz/pwd"/> </CONFIG> This file is in some directory at UNix box. I need to write a... (4 Replies)
Discussion started by: neeto
4 Replies
Login or Register to Ask a Question