Operating System - Linux
1751843 Members
5481 Online
108782 Solutions
New Discussion юеВ

Re: Manage parameter-file

 
SOLVED
Go to solution
Oviwan
Honored Contributor

Manage parameter-file

Hi @ll

what is the best way to manage a parameter-file?
I have a file like this:

par1=value1
par2=value2 #comment
par3=value3

i have a menu and there is a menu-point which is called "set par1", when i choice this point comes a prompt where i can give the value for par1. after i give the value, how can i set this value in the parameter-file? and also read from the file?

Thanks
20 REPLIES 20
Oviwan
Honored Contributor

Re: Manage parameter-file

*EDIT*
it should be in ksh.

Regards
Rodney Hills
Honored Contributor

Re: Manage parameter-file

This looks like something for a shell script, so you would use "." command to assign your shell variables. Then to update the param file, write all the params back. Example-

par2=23
(
echo "par1=$par1"
echo "par2=$par2 #comment"
echo "par3=$par3"
) >yourparamfile

HTH

-- Rod Hills
There be dragons...
Oviwan
Honored Contributor

Re: Manage parameter-file

Thanks

what is the best way to read one value from the parameter-file?

and something other:
what means "set -x"?
James R. Ferguson
Acclaimed Contributor

Re: Manage parameter-file

Hi:

One easy way to extract one parameter's value from your file is to use 'awk'.

# echo "par2=value2"|awk '/par2/ {split($0,a,/=/);print a[2]}'

..returns (prints) value2

# X=`echo "par2=value2"|awk '/par2/ {split($0,a,/=/);print a[2]}'`

Thus ${X} now contains 'value2', the value of 'par2'.

As for the shell construct 'set -x' --- this prints the shell commands as they are executed. This is useful in debugging. See the man pages for 'sh-psix' for more information.

Regards!

...JRF...
James R. Ferguson
Acclaimed Contributor

Re: Manage parameter-file

Hi (again):

I should generalize a bit; sorry. Given your parameter file is composed with "=" as the delimiter betweeen parameter and value, to find the value of parameter "X":

# X=par2;awk '{if ($1~X) {split($0,a,/=/);print a[2]}}' X=$X parmfile

...returns the value of 'par2'.

Regards!

...JRF...
Oviwan
Honored Contributor

Re: Manage parameter-file

Ty

is there also a way to write a new value in the parameter-file without rewrite the whole parameter-file? also with awk.
James R. Ferguson
Acclaimed Contributor

Re: Manage parameter-file

Hi Oviwan:

Yes, you can update your file's parameters in place with perl:

# perl -i.old -ple 's/par2=.+\b/par2=newvalue/' parmsfile

...would make a backup copy "parmsfile.old" and update inplace the value of 'par2' changing it from whatever follows the "=" character to "newvalue".

Regards!

...JRF...
Arturo Galbiati
Esteemed Contributor

Re: Manage parameter-file

Hi,
I suggest:
grep ^par1 parameter-file|cut -d"=" -f2|sed 's/^ *//g'
In this way you can have any number of spaces between = and the parameter value.
HTH,
Art
James R. Ferguson
Acclaimed Contributor

Re: Manage parameter-file

Hi:

Arturo's point about embedded spaces is easily managed:

# perl -i.old -ple 's/par2\s*=.+\b/par2=newvalue/' parmsfile

Regards!

...JRF...