To substitute multiple variable by their content in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting To substitute multiple variable by their content in a file
# 1  
Old 09-14-2016
To substitute multiple variable by their content in a file

Dear All,

I would like to instantiate a "pattern file" substituting "variable name" by their content.

Saying, we have:

1/ a "pattern file" containing different "variable name", the first character of the "variable name" is "@":

Code:
[x004191a@xsnl11p317a modl]$ cat TPTModl.txt
                              DEFINE OPERATOR FILE_READER_@OBJ_TBLNAME_CD
                              DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR PRODUCER OPERATOR'
                              TYPE DATACONNECTOR PRODUCER
                              SCHEMA SCHEMA_@OBJ_TBLNAME_CD
                              ATTRIBUTES
                            (
                              DirectoryPath                = '@DirectoryPath'
                            , ArchiveDirectoryPath         = '@ArchiveDirectoryPath'
                            , FileName                     = '@OBJFLOWPARM_FILEPATTERNDEFN_CD'
                            , Format                       = 'DELIMITED'
                            , TextDelimiter                = '@OBJFLOWPARM_FILETEXTDELIMITER_CD'
                            , EnableScan                   = 'Y'
                            , IndicatorMode                = 'N'
                            , TrimTrailingBlanks           = 'Y'
                            , TrimLeadingBlanks            = 'Y'
                            , OpenMode                     = 'Read'
                            );

2/ a variable with the list of the "variable name" with their value:

Code:
[x004191a@xsnl11p317a tmp]$ echo "$var"
@OBJ_DBNAME_CD:ABCD
@OBJ_TBLNAME_CD:EFGH
@OBJFLOWPARM_FILEPATTERNDEFN_CD:*_VERSFLDR.csv
@OBJFLOWPARM_FILETEXTDELIMITER_CD:$$

How would it be possible to produce an output file from the pattern input file with all the replacement done ?

Thanks a lot for your help and kind attention,

Didier.
# 2  
Old 09-14-2016
Hello dae,

Could you please try following and let me know if this helps.
Code:
 awk 'FNR==NR{A[$1]=$2;next} {for(i in A){match($0,i);if(substr($0,RSTART,RLENGTH)){gsub(i,A[i],$0)}};print}' FS=":"  pattern_file FS=" "   Input_file

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 09-14-2016
Any attempts/ideas/thoughts from your side?
# 4  
Old 09-14-2016
Not so many ideas Rudy ... I would be able to do it with the list of variables in a file but I feel not so comfortable with the list of variables in a variable ... as I try to do !
# 5  
Old 09-14-2016
Try
Code:
awk -v RP="$var" '
BEGIN   {for (n=split(RP, T1, "\n"); n>0; n--)  {split (T1[n], T2, ":")
                                                 REPL[T2[1]] = T2[2]
                                                }
        }
        {for (r in REPL) sub (r, REPL[r])
        }
1
' file
                              DEFINE OPERATOR FILE_READER_EFGH
                              DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR PRODUCER OPERATOR'
                              TYPE DATACONNECTOR PRODUCER
                              SCHEMA SCHEMA_EFGH
                              ATTRIBUTES
                            (
                              DirectoryPath                = '@DirectoryPath'
                            , ArchiveDirectoryPath         = '@ArchiveDirectoryPath'
                            , FileName                     = '*_VERSFLDR.csv'
                            , Format                       = 'DELIMITED'
                            , TextDelimiter                = '$$'
                            , EnableScan                   = 'Y'
                            , IndicatorMode                = 'N'
                            , TrimTrailingBlanks           = 'Y'
                            , TrimLeadingBlanks            = 'Y'
                            , OpenMode                     = 'Read'
                            );

# 6  
Old 09-14-2016
or even
Code:
awk -v RP="$var" '
BEGIN   {for (n=split(RP, T, "[\n:]"); n>0; n-=2) REPL[T[n-1]] = T[n]
        }
        {for (r in REPL) sub (r, REPL[r])
        }
1
' file

This User Gave Thanks to RudiC For This Post:
# 7  
Old 09-14-2016
Rudi & Ravinder, thanks a lot ! ... just let me check and understand ... the last point is much more difficult to me ! Smilie

---------- Post updated at 04:55 PM ---------- Previous update was at 04:41 PM ----------

Rudi, your code is perfect ... I do not understand anything but it is performing exactly what I would like !

Thanks a lot !
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to substitute a word in multiple file?

Team, I want to change below parameter in all the files in a directory, Check for HOSTNAME=`hostname` Change to HOSTNAME=localhost And I tried below but, its not working ☹ find /tmp -type f -exec sed 's/"HOSTNAME\=\`hostname\`"/"HOSTNAME\=localhost/g'" Help me if I am missing... (6 Replies)
Discussion started by: natraj005
6 Replies

2. Shell Programming and Scripting

Replacement of variable by their content in a file

Dear all, I have a "SQL request" in a file: that request include different "host variable" and I would like to substitute the different "host variable" by their respective content before executing the request. For example: $ echo $SHELL /bin/bash $ cat dae2.txt DELETE FROM ... (11 Replies)
Discussion started by: dae
11 Replies

3. Shell Programming and Scripting

Substitute one line of multiple files according to another file

I need to make ~96 configure files from a template config file which has hundreds of rows that looks like: template.config: #average insert size avg_ins=1000 ...... other information omitted Those config files are named in sequence from S01.config, S02.config, ... etc with different... (11 Replies)
Discussion started by: yifangt
11 Replies

4. UNIX for Dummies Questions & Answers

Getting ls content into a file using variable

hi i just cant figure out how can i do this ls -lt > log.txt using $PWD what i mean is how can i get the ls command content into a file using $PWD variable? :confused: (4 Replies)
Discussion started by: chinababy
4 Replies

5. Shell Programming and Scripting

How to replace multiple file content?

Hi Gurus, I need replace multiple files content. the file name pattern likes currentfile_code_* the content pattern in the file like text=value I need replace the content as text=abcde Thanks in advance (7 Replies)
Discussion started by: ken6503
7 Replies

6. Shell Programming and Scripting

Variable resolution in File content

I have a file File1 containing lines like below apple ${FRUIT}-Color orange ${FRUIT}-Color banana ${FRUIT}-Color Now, in my shell I'm reading the file like below while read FRUIT DESC; do echo $FRUIT $DESC; done < File1 which outputs - apple ${FRUIT}-Color orange ${FRUIT}-Color... (3 Replies)
Discussion started by: nexional
3 Replies

7. Shell Programming and Scripting

How to put content of file into a variable?

For example, I have a simple text file note: this a note a simple note a very very simple notewhen I use this command, temp=$(cat "note.txt")then I echo temp, the result is in one line. echo $temp note: this a note a simple note a very very simple noteMy variable doesn't have newline. How... (7 Replies)
Discussion started by: 14th
7 Replies

8. Shell Programming and Scripting

Variable of Content From Part of Other File

I may not being doing this description justice, but I'll give it a try. I created a mailx script; there will be several messages using the same script where the only difference is the content. So I figured I'd make the content of the message a variable retrieved from a separate file. I have five... (5 Replies)
Discussion started by: royarellano
5 Replies

9. UNIX for Dummies Questions & Answers

How to assign the content of a file to a variable?

Hi all, I have a problem here. I have a file and let we take the content of the file is just '32' (only a numeric value in that file). Now I need to assign this numeric value ( value in that file) to a variable. Is that possible? If so, can you plz advice me on this? Thanks in... (4 Replies)
Discussion started by: iamgeethuj
4 Replies

10. Shell Programming and Scripting

redirecting variable content to a file!

Hello! I'm having problems trying to extract the contents of a variable and placing it into a text file. Grateful for any help. Been trying something along the lines of: $variable > file.txt or `cat < $variable` > file.txt As you can see I'm a newbie to this :D (2 Replies)
Discussion started by: lloowen
2 Replies
Login or Register to Ask a Question