11-06-2008
awk/sed Command : Parse parameter file / send the lines to the ksh export command
Sorry for the duplicate thread this one is similar to the one in
https://www.unix.com/shell-programmin...#post302255121
Since there were no responses on the parent thread since it got resolved partially i thought to open the new thread for the remaining issue
I am writing a shell program that executes a lot of Oracle SQL Files on different databases based on the enviroment setting value. I am trying to design a parameter file where i can store the environment values for all the databases in the below format
Environment File
File Name oraenv
# /* DB1 */
ORACLE_SID=DB1
ORACLE_BASE=
ORACLE_HOME=
PATH=
LD_LIBRARY_PATH=
.
.
Other Parameters
# /* End */
# /* DB2 */
ORACLE_SID=DB2
ORACLE_BASE=
ORACLE_HOME=
PATH=
LD_LIBRARY_PATH=
.
.
Other Parameters
# /* End */
# /* DB3 */
ORACLE_SID=DB3
ORACLE_BASE=
ORACLE_HOME=
PATH=
LD_LIBRARY_PATH=
.
.
Other Parameters
# /* End */
Master Script <-- Main Program that uses these parameters
File Name actions.sh
When the script is executed as ./actions,sh DB1 i want this to read all the parameters related to DB1 from the oraenv written between the pattern below
# /* DB1 */
.
...
..
# /* End */
create "export ORACLE_SID .." etc...
Solution
DB=DB1
for LINE in `sed -n '/ '${DB}' /,/ End /p' oraenv| grep -v ^#`; do
export "${LINE}"
done
The problem with the above code is some of the parameters in the oraenv file have $.. Like as below
# /* DB1 */
ORACLE_HOME=/temp
OH=$ORACLE_HOME
# /* End */
Expected result is
ORACLE_HOME=/temp
OH=/temp
Actual results
ORACLE_HOME=/temp
OH=$ORACLE_HOME
I have been struggling to resolve this issue for 4 hrs now... Any quick help is very appreciated.
Last edited by rajan_san; 11-06-2008 at 08:49 AM..
Reason: Forgot Content
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi,
I am trying to replace a URL by another URL in the SED command e.g.
cat dir/filename1 | sed -e 's/"http:\/\/*dtd"/"http:\/\/abc.def.com\/xyz.dtd"/' > dir/newfile.xml
But I need to pass a parameter to the SED command which should have the new url string i.e.... (2 Replies)
Discussion started by: dsrookie
2 Replies
2. Shell Programming and Scripting
Hi,
I need an awk command that would parse the below expression
Input Format
1 'Stmt1 ............................'2 'Stmt2 ............................'3 'Stmt3 ............................'4 'Stmt4 ............................'5 'Stmt5 ............................'6 'Stmt6... (1 Reply)
Discussion started by: rajan_san
1 Replies
3. Shell Programming and Scripting
Hi there, am trying to parse an Apache 'server' config file. A snippet of the config file is shown below:
.....
ProxyPassReverse /foo http://foo.example.com/bar
.....
.....
RewriteRule ^/(.*) http://www.example.com/$1
RewriteRule /redirect https://www.example1.com/$1
........ (7 Replies)
Discussion started by: jy2k7ca
7 Replies
4. Shell Programming and Scripting
Input:
hello hello
hello hello
monkey
donkey
hello hello
drink
dance
drink
Output should be:
hello hello
monkey
donkey
drink
dance (9 Replies)
Discussion started by: cola
9 Replies
5. Shell Programming and Scripting
Hi,
I am modifying a file with sed command. i want to make SCORE= blank in the file whereever SCORE=somevalue.
What will *$ do in the below command?
cat $file | sed 's/SCORE=.*$/SCORE=\r/g' > newfile
The last line is also missing in the new file. How to make SCORE='100' to SCORE=... (5 Replies)
Discussion started by: ashok.k
5 Replies
6. UNIX for Dummies Questions & Answers
Hi All,
I need help on the following req.
I am getting output of a command as follows:
16377612 total memory
3802460 used memory
2827076 active memory
681948 inactive memory
12575152 free memory
477452 buffer memory
I want to compute used... (1 Reply)
Discussion started by: mailsara
1 Replies
7. Shell Programming and Scripting
AWK Command parse a file based on string.
I am trying to write a shell script to parse a file based on a string and move the content of the file to another file.
Here is scenario.
File content below
Mime-Version: 1.0
Content-Type: multipart/mixed;
... (2 Replies)
Discussion started by: aakishore
2 Replies
8. Shell Programming and Scripting
Hi
I know sed and awk has options to give range of line numbers, but
I need to replace pattern in specific lines
Something like
sed -e '1s,14s,26s/pattern/new pattern/' file name
Can somebody help me in this....
I am fine with see/awk/perl
Thank you in advance (9 Replies)
Discussion started by: dani777
9 Replies
9. Shell Programming and Scripting
Hi,
In order to make our debugging easier in log files, I need this script.
My log file will be structured like this :
------Invoking myfile -param:start_time=1371150900000 -param:end_time=1371151800000 for 06/14/2013
<multiple lines here>
.....
- Step Sybase CDR Table.0 ended... (3 Replies)
Discussion started by: Lakshmikumari
3 Replies
10. Shell Programming and Scripting
Hi,
I have been stuck in this requirement where my file contains the below format.
20150812170500846959990854-25383-8.0.0
"ABC Report" hp96880
"4952"
20150812170501846959990854-25383-8.0.0 End of run
20150812060132846959990854-20495-8.0.0
"XYZ Report" vg76452
"1006962188"... (6 Replies)
Discussion started by: Chinmaya Kabi
6 Replies
LEARN ABOUT OPENSOLARIS
environment.d
ENVIRONMENT.D(5) environment.d ENVIRONMENT.D(5)
NAME
environment.d - Definition of user session environment
SYNOPSIS
~/.config/environment.d/*.conf
/etc/environment.d/*.conf
/run/environment.d/*.conf
/usr/lib/environment.d/*.conf
/etc/environment
DESCRIPTION
The environment.d directories contain a list of "global" environment variable assignments for the user environment. systemd-environment-d-
generator(8) parses them and updates the environment exported by the systemd user instance to the services it starts.
It is recommended to use numerical prefixes for file names to simplify ordering.
For backwards compatibility, a symlink to /etc/environment is installed, so this file is also parsed.
CONFIGURATION DIRECTORIES AND PRECEDENCE
Configuration files are read from directories in /etc/, /run/, and /lib/, in order of precedence. Each configuration file in these
configuration directories shall be named in the style of filename.conf. Files in /etc/ override files with the same name in /run/ and
/lib/. Files in /run/ override files with the same name in /lib/.
Packages should install their configuration files in /lib/. Files in /etc/ are reserved for the local administrator, who may use this logic
to override the configuration files installed by vendor packages. All configuration files are sorted by their filename in lexicographic
order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the
lexicographically latest name will take precedence. It is recommended to prefix all filenames with a two-digit number and a dash, to
simplify the ordering of the files.
If the administrator wants to disable a configuration file supplied by the vendor, the recommended way is to place a symlink to /dev/null
in the configuration directory in /etc/, with the same filename as the vendor configuration file. If the vendor configuration file is
included in the initrd image, the image has to be regenerated.
CONFIGURATION FORMAT
The configuration files contain a list of "KEY=VALUE" environment variable assignments, separated by newlines. The right hand side of these
assignments may reference previously defined environment variables, using the "${OTHER_KEY}" and "$OTHER_KEY" format. It is also possible
to use "${FOO:-DEFAULT_VALUE}" to expand in the same way as "${FOO}" unless the expansion would be empty, in which case it expands to
DEFAULT_VALUE, and use "${FOO:+ALTERNATE_VALUE}" to expand to ALTERNATE_VALUE as long as "${FOO}" would have expanded to a non-empty value.
No other elements of shell syntax are supported.
Each KEY must be a valid variable name. Empty lines and lines beginning with the comment character "#" are ignored.
Example
Example 1. Setup environment to allow access to a program installed in /opt/foo
/etc/environment.d/60-foo.conf:
FOO_DEBUG=force-software-gl,log-verbose
PATH=/opt/foo/bin:$PATH
LD_LIBRARY_PATH=/opt/foo/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}
SEE ALSO
systemd(1), systemd-environment-d-generator(8), systemd.environment-generator(7)
systemd 237 ENVIRONMENT.D(5)