How to find a certain string in a file and replace it with a value from another file using sed/awk?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to find a certain string in a file and replace it with a value from another file using sed/awk?
# 1  
Old 12-16-2010
How to find a certain string in a file and replace it with a value from another file using sed/awk?

Hi Everyone,
I am new to this forum and new to sed/awk programming too !!
I need to find particular string in file1(text file) and replace it with a value from another text file(file2) the file2 has only one line and the value to be replaced with is in the second column.

file 1:
(assert (= c OUT))

file 2:
OUT 0


NOW, I HAVE TO REPLACE 'OUT' WITH THE VALUE 0.
please pleeaseee tell me how to do this using sed/awk or any other way!!! am in distress!! HELPImageImageImage
# 2  
Old 12-16-2010
Code:
 
key=$(awk '{print $1}' file2)
value=$(awk '{print $2}' file2)
sed -i "s/$key/$value/g" file1

This User Gave Thanks to anurag.singh For This Post:
# 3  
Old 12-16-2010
maybe something like this ?
Code:
while read a b
do
    sed "s/$a/$b/g" file1 >output
    cat output >file1
done <file2

or
Code:
while read a b
do
    sed -i "s/$a/$b/g" file1
done <file2


Last edited by ctsgnb; 12-16-2010 at 01:20 PM..
This User Gave Thanks to ctsgnb For This Post:
# 4  
Old 12-16-2010
Guys thanx for replying!!Smilie
But will these solve my problem? since where exactly are we searching the string 'OUT' here? I actually have similar other strings to search and replace with other values from other files.. actually this is the case:

file 1:

(define argc :: int)
(assert (> argc 1))
(assert (= argc ARG))
<check>

(define argc :: float)
(assert (> c 0))
(assert (= c OUT))
<check>

.
.
.

file2:
main 1


file 3:
main 0
.
.
.
Now, I have to find the string 'ARG' from file 1 and replace it with the value '1' from file 2. And, find 'OUT' and replace it with the value '0' from file 3.

Now can you put some more light on it? SmilieSmilie
# 5  
Old 12-16-2010
If you have too many files like file2, file3,....file50
Then all above files can be concatenated into one say a temp file..
then use temp file and change values in file1.
Then go with ctsgnb in post #3
This User Gave Thanks to anurag.singh For This Post:
# 6  
Old 12-16-2010
I had a file which had all this data... I had separated it only :P
actually the data in file 2, 3, 4 etc are divided into 2 files... i have to merge them. okay i will see this and get back to you. thanx a ton!! Smilie)

---------- Post updated at 11:50 PM ---------- Previous update was at 11:48 PM ----------

does the link u gave show how to concatenate files into a single?

---------- Post updated 12-17-10 at 12:06 AM ---------- Previous update was 12-16-10 at 11:50 PM ----------

ques---->
does a and b signify the strings i want to find?
# 7  
Old 12-16-2010
In
Code:
 
while read a b

a is first string (i.e. OUT) and b is 2nd string (i.e. 0)
and in
Code:
 
sed -i "s/$a/$b/g" file1

$a will be replaced by $b

If you don't have file2, file3, ..., file50 concatenate into one already then you need few lines of script to do that 1st. If you are facing problem in this, pls tell all such files and there names (name format)
This User Gave Thanks to anurag.singh For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace string of a file with a string of another file for matches using grep,sed,awk

I have a file comp.pkglist which mention package version and release . In 'version change' and 'release change' line there are two versions 'old' and 'new' Version Change: --> Release Change: --> cat comp.pkglist Package list: nss-util-devel-3.28.4-1.el6_9.x86_64 Version Change: 3.28.4 -->... (1 Reply)
Discussion started by: Paras Pandey
1 Replies

2. Shell Programming and Scripting

Replace string in XML file with awk/sed with string from another

Sorry for the long/weird title but I'm stuck on a problem I have. I have this XML file: </member> <member> <name>TransactionID</name> <value><string>123456789123456</string></value> </member> <member> <name>Number</name> ... (9 Replies)
Discussion started by: cozzin
9 Replies

3. Shell Programming and Scripting

Perl script to read string from file#1 and find/replace in file#2

Hello Forum. I have a file called abc.sed with the following commands; s/1/one/g s/2/two/g ... I also have a second file called abc.dat and would like to substitute all occurrences of "1 with one", "2 with two", etc and create a new file called abc_new.dat sed -f abc.sed abc.dat >... (10 Replies)
Discussion started by: pchang
10 Replies

4. Shell Programming and Scripting

Help with Passing the Output of grep to sed command - to find and replace a string in a file.

I have a file example.txt as follows :SomeTextGoesHere $$TODAY_DT=20140818 $$TODAY_DT=20140818 $$TODAY_DT=20140818I need to automatically update the date (20140818) in the above file, by getting the new date as argument, using a shell script. (It would even be better if I could pass... (5 Replies)
Discussion started by: SriRamKrish
5 Replies

5. Shell Programming and Scripting

sed or awk to replace a value in a certain line from another file containing a string

Hi experts, In my text file I have the following alot of lines like below. input.k is as follows. 2684717 -194.7050476 64.2345581 150.6500092 0 0 2684718 -213.1575623 62.7032242 150.6500092 0 0 *INCLUDE $# filename... (3 Replies)
Discussion started by: hamnsan
3 Replies

6. Shell Programming and Scripting

How to replace a string containing @ in a file using sed ?

I have a list of names and email addresses. Sample File - username=poga--poga@yahoo.com new-york,US 512834 username=poga123--poga123@hotmail.com new-jersey,US 0894753 Requirement is to replace the email ids as dummy_username@xyz.com using sed only. Output File -... (4 Replies)
Discussion started by: poga
4 Replies

7. Shell Programming and Scripting

replace (sed?) a string in file with multiple lines (string) from variable

Can someone tell me how I can do this? e.g: a=$(echo -e wert trewt ertert ertert ertert erttert erterte rterter tertertert ert) How do i replace the STRING with $a? I try this: sed -i 's/STRING/'"$a"'/g' filename.ext but this don' t work (2 Replies)
Discussion started by: jforce
2 Replies

8. Shell Programming and Scripting

replace (sed?) a single line/string in file with multiple lines (string) from another file??

Can someone tell me how I can do this? e.g: Say file1.txt contains: today is monday the 22 of NOVEMBER 2010 and file2.txt contains: the 11th month of How do i replace the word NOVEMBER with (5 Replies)
Discussion started by: tuathan
5 Replies

9. Shell Programming and Scripting

Using sed to replace a string in file with a string in a variable that contains spaces

Hi, i call my shell like: my_shell "my project name" my script: #!/bin/bash -vx projectname=$1 sed s/'PROJECT_NAME ='/'PROJECT_NAME = '$projectname/ <test_config_doxy >temp cp temp test_config_doxy the following error occurres: sed s/'PROJECT_NAME ... (2 Replies)
Discussion started by: vivelafete
2 Replies

10. Shell Programming and Scripting

find and replace a string in a file without the use of temp file

Hi - I am looking for a replacing a string in a in multiple *.sql files in directory with a new string without using a temporary file Normally I can use sed command as below for W in ls `FILE*.sql` do sed 's/OLD/NEW/g' $W > TEMPFILE.dat mv TEMPFILE.dat $W done But Here in my... (9 Replies)
Discussion started by: raghutapal
9 Replies
Login or Register to Ask a Question