10-13-2008
String substitution
Hi,
I have a properties file (myprop.properties) which contains some values:
@oneValue@==tcp://localhost:1234
@twoValue@==tcp://localhost:4563
@threeValue@==tcp://localhost7895
I have a xml file (myXmlFile.xml)which contains some tokens:
<application name="aTest">
<NameValuePair>
<name>firstName</name>
<value>@oneValue@</value>
</NameValuePair>
<NameValuePair>
<name>secondName</name>
<value>@twoValue@</value>
</NameValuePair>
</application>
I want to replace the tokens in the file myXmlFile.xml by the values of the myprop.properties. I did a script but I cannot manage to match the tokens with awk, I always get the string "nothing" any ideas?
#!/bin/ksh
exec 0< myXmlFile.xml
while read line
do
count=0
for token_per_line in $(cat myprop.properties)
do
first_char=`echo ${token_per_line} | cut -c1`
if [ "$first_char" != "#" ] && [ $count -lt 1 ]; then
token_variables=`echo "$token_per_line" | grep -v '#'| awk -F'==' '{print $1}'`
token_values=`echo "$token_per_line" | awk -F'==' '{print $2}'`
echo $line | awk -v token_var="$token_variables" token_val="$token_values" '{
{
if ($0 ~ /token_var/) {
print "matching"
gsub($token_variables, $token_values, $line);
print $0
}
else {
print "nothing"
}
}
}'
count=$count+1
fi
done
done
exec 0<&3
Regards
John
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi!
I've the following script code with an input parameter:
sed 's/oldstring/$1/g' myfile > newfile
(I launch it with comman line: $ MyShell newstring)
Problem: the substituion doesn't work (oldstring becomes $1, instead of newstring). How could I solve this situation?
Thanks, ... (2 Replies)
Discussion started by: pciatto
2 Replies
2. Shell Programming and Scripting
When I run the script I pass in 2 expressions (ex. replace.ksh new old)
I want the script to go line by line for a given file in a given directory and replace the word new with old. Of course in my line where I have the awk statement it is replacing the 2nd word with 1st instead of new with... (3 Replies)
Discussion started by: goodrics
3 Replies
3. Shell Programming and Scripting
Hello
I have several files where a string similar to this appears:
/home/workload/bin/ProcDly/scrpts/T54.sh > $LOG
I need to change it to something like this:
$VARIABLE > $LOG
However, due to the configuration of the rest of the files, I should only find this string by the... (4 Replies)
Discussion started by: Scarlos
4 Replies
4. UNIX for Advanced & Expert Users
Hey ppl,
Could u tell me how to replace such a string
xyz->x with XYZ(x), where x can be any variable accessible by pointer to structure, xyz
in an entire file? (1 Reply)
Discussion started by: laxmi
1 Replies
5. Shell Programming and Scripting
Hey ppl,
Could u tell me how to replace such a string
xyz->x with XYZ(x), where x can be any variable accessible by pointer to structure, xyz
in an entire file? (3 Replies)
Discussion started by: laxmi
3 Replies
6. Shell Programming and Scripting
Hi friends!
I have a tab delimited file with two columns :
GB_45_DRB SP:0139466(mrmi sisignm)|SP:3674(fllflg_itoioh)|SP:68954779(RMTKLGF to emmdm-roomto)
GB_45_DRD SP:475928(mgmdksi rikgkg)|SP:587959(roykgl tiic-tm)|SP:0139466(mrmi sisignm)|SP:3674(fllflg_itoioh)|SP:68954779(RMTKLGF to... (4 Replies)
Discussion started by: jacks
4 Replies
7. Shell Programming and Scripting
hi guys...need some help here...
i am making a a script to automatically install netbackup client...so its gonna write a configuration file according to the host name.... the line would be something like this
CLIENT_NAME = odel_bkp.test.com
the thing is ...the host name in reallity is... (2 Replies)
Discussion started by: razael
2 Replies
8. Shell Programming and Scripting
Hi,
I have a template file and want to replace 3 parameters to the values that I want. these values are in a parameter file.
Any idea how to do this in perl?
the parameter file looks like:
host_name = jupiter
PORT = 1562
IPADDRESS = 10.1.34.10
the template file has lots of entry.... (1 Reply)
Discussion started by: melanie_pfefer
1 Replies
9. Shell Programming and Scripting
I have the following code:
strfuture=abcdefghi
ver=${strfuture:${count}:1}
mj7777_ver=${ver} start_mj7777_iteration
let count=count+1
When it is executed I get bad substitution. The same if I use
ver=${strfuture:$count:1}
mj7777_ver=${ver}... (6 Replies)
Discussion started by: Bruble
6 Replies
10. Programming
We have a formatted screen system where a driver program passes the locations of a list of files that called programs may be using. It will look something like this:
/{number of characters varies}/DATA/MASTERFILEBecause of the size of some files we will be splitting older records into a history... (2 Replies)
Discussion started by: wbport
2 Replies
echo(1B) SunOS/BSD Compatibility Package Commands echo(1B)
NAME
echo - echo arguments to standard output
SYNOPSIS
/usr/ucb/echo [-n] [argument]
DESCRIPTION
echo writes its arguments, separated by BLANKs and terminated by a NEWLINE, to the standard output.
echo is useful for producing diagnostics in command files and for sending known data into a pipe, and for displaying the contents of envi-
ronment variables.
For example, you can use echo to determine how many subdirectories below the root directory (/) is your current directory, as follows:
o echo your current-working-directory's full pathname
o pipe the output through tr to translate the path's embedded slash-characters into space-characters
o pipe that output through wc -w for a count of the names in your path.
example% /usr/bin/echo "echo $PWD | tr '/' ' ' | wc -w"
See tr(1) and wc(1) for their functionality.
The shells csh(1), ksh(1), and sh(1), each have an echo built-in command, which, by default, will have precedence, and will be invoked if
the user calls echo without a full pathname. /usr/ucb/echo and csh's echo() have an -n option, but do not understand back-slashed escape
characters. sh's echo(), ksh's echo(), and /usr/bin/echo, on the other hand, understand the black-slashed escape characters, and ksh's
echo() also understands a as the audible bell character; however, these commands do not have an -n option.
OPTIONS
-n Do not add the NEWLINE to the output.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWscpu |
+-----------------------------+-----------------------------+
SEE ALSO
csh(1), echo(1), ksh(1), sh(1), tr(1), wc(1), attributes(5)
NOTES
The -n option is a transition aid for BSD applications, and may not be supported in future releases.
SunOS 5.10 3 Aug 1994 echo(1B)