How to pass strings from a list of strings from another file and create multiple files?

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How to pass strings from a list of strings from another file and create multiple files?
# 1  
Old 04-10-2017
How to pass strings from a list of strings from another file and create multiple files?

Hello Everyone ,

Iam a newbie to shell programming and iam reaching out if anyone can help in this :-

I have two files
1) Insert.txt
2) partition_list.txt

insert.txt looks like this :-
Code:
insert into emp1 partition (partition_name) 
(a1,
b2,
c4,
s6,
d8)
select 
a1,
b2,
c4,
s6,
d8
from emp partition (partition_name);
commit;


partition_list.txt looks like this :-
Code:
aemp_sec_01P2011_1
yemp_sec_01P2011_4
aemp_sec_01P2011_3
aemp_sec_01P2011_8
aemp_sec_01P2011_10
aemp_sec_01P2012_14
aemp_sec_01P2014_39
aemp_sec_01P2016_10

Each string in the partition_list.txt should replace both the "partition_name" string in the insert.txt file and create a new file for each string used in the partition_list.txt . How can this be achieved without opening the files and modifying . how can it be done through sed or awk ?

For ex :- The end o/p would be 8 new files. sample file will be :-

Code:
cat insert_aemp_sec_01P2011_1.txt
insert into emp1 partition (aemp_sec_01P2011_1) 
(a1,
b2,
c4,
s6,
d8)
select 
a1,
b2,
c4,
s6,
d8
from emp partition (aemp_sec_01P2011_1);
commit;

Code:
cat insert_yemp_sec_01P2011_4.txt
insert into emp1 partition (yemp_sec_01P2011_4) 
(a1,
b2,
c4,
s6,
d8)
select 
a1,
b2,
c4,
s6,
d8
from emp partition (yemp_sec_01P2011_4);
commit;

so there should be 8 like to be generated based on each line in partition_list.txt.


Iam sorry if i havent used to code tag button ...i apologise .
# 2  
Old 04-10-2017
Hi nubie2linux,
Welcome to the UNIX & Linux Forums.

Your use of CODE tags is fine (and appreciated).

You haven't said what operating system (although we might guess that it is some Linux distribution from your choice of user name) or shell you're using... With a POSIX conforming shell (such as ksh [which is used in the examples below] or bash) and sed utility you could use something like:
Code:
#!/bin/ksh
while IFR= read -r part
do	sed "s/partition_name/$part/" insert.txt  > "insert_$part.txt"
done < partition_list.txt

Or, more efficiently, but requiring a little more typing, with awk:
Code:
#!/bin/ksh
awk '
FNR == NR {
	template = template RS $0
	next
}
{	out = substr(template, 2)
	file = "insert_" $0 ".txt"
	gsub(/partition_name/, $0, out)
	print out > file
	close(file)
}' insert.txt partition_list.txt

If you want to use awk on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 04-10-2017
Hi Don , Thank you very much for your help . The scripts helped me a lot .
we use linux os and the scripts worked . Thank you again
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Use strings from nth field from one file to match strings in entire line in another file, awk

I cannot seem to get what should be a simple awk one-liner to work correctly and cannot figure out why. I would like to use patterns from a specific field in one file as regex to search for matching strings in the entire line ($0) of another file. I would like to output the lines of File2 which... (1 Reply)
Discussion started by: jvoot
1 Replies

2. Shell Programming and Scripting

Trying to take file numbers from a file, pass them to sed to change strings in corresponding lines

I have a bunch of file numbers in the file 'test': I'm trying the above command to change all the instances of "H" to "Na+" in the file testsds.pdb at the line numbers indicated in the file 'test'. I've tried the following and various similar alternatives but nothing is working: cat test |... (3 Replies)
Discussion started by: crunchgargoyle
3 Replies

3. Shell Programming and Scripting

Search & Replace: Multiple Strings / Multiple Files

I have a list of files all over a file system e.g. /home/1/foo/bar.x /www/sites/moose/foo.txtI'm looking for strings in these files and want to replace each occurrence with a replacement string, e.g. if I find: '#@!^\&@ in any of the files I want to replace it with: 655#@11, etc. There... (2 Replies)
Discussion started by: spacegoose
2 Replies

4. Shell Programming and Scripting

Extract two strings from a file and create a new file with these strings

I have the following lines in a log file. It would be great if some one can help me to create a new file with the just entries in the below format. 66.150.161.195 HPSAC=Z05 66.150.161.196 HPSAC=A05 That is just extract the IP address and the string DPSAC=its value 66.150.161.195 -... (1 Reply)
Discussion started by: Tuxidow
1 Replies

5. Shell Programming and Scripting

Take a list if strings from a file and search them in a list of files and report them

I have a file 1.txt with the below contents. -----cat 1.txt----- 1234 5678 1256 1234 1247 ------------------- I have 3 more files in a folder -----ls -lrt------- A1.txt A2.txt A3.txt ------------------- The contents of those three files are similar format with different data values... (8 Replies)
Discussion started by: realspirituals
8 Replies

6. Shell Programming and Scripting

Delete lines in file containing duplicate strings, keeping longer strings

The question is not as simple as the title... I have a file, it looks like this <string name="string1">RZ-LED</string> <string name="string2">2.0</string> <string name="string2">Version 2.0</string> <string name="string3">BP</string> I would like to check for duplicate entries of... (11 Replies)
Discussion started by: raidzero
11 Replies

7. UNIX for Dummies Questions & Answers

Find Multiple Strings from a list of *.gz files withour decompressing...

Hello Team, There is this situation where there are around 20 *.gz files and i want to search multiple words from all those files. Example as below : filea.gz fileb.gz filec.gz now i want to search words "hi" and "hello" from all these 3 files without... (4 Replies)
Discussion started by: varun87
4 Replies

8. UNIX for Dummies Questions & Answers

Delete strings in file1 based on the list of strings in file2

Hello guys, should be a very easy questn for you: I need to delete strings in file1 based on the list of strings in file2. like file2: word1_word2_ word3_word5_ word3_word4_ word6_word7_ file1: word1_word2_otherwords..,word3_word5_others... (7 Replies)
Discussion started by: roussine
7 Replies

9. UNIX for Dummies Questions & Answers

Grep multiple strings in multiple files using single command

Hi, I will use below command for grep single string ("osuser" is search string) ex: find . -type f | xarg grep -il osuser but i have one more string "v$session" here i want to grep in which file these two strings are present. any help is appreciated, Thanks in advance. Gagan (2 Replies)
Discussion started by: gagan4599
2 Replies

10. UNIX for Dummies Questions & Answers

best method of replacing multiple strings in multiple files - sed or awk? most simple preferred :)

Hi guys, say I have a few files in a directory (58 text files or somthing) each one contains mulitple strings that I wish to replace with other strings so in these 58 files I'm looking for say the following strings: JAM (replace with BUTTER) BREAD (replace with CRACKER) SCOOP (replace... (19 Replies)
Discussion started by: rich@ardz
19 Replies
Login or Register to Ask a Question