Need to replace one string, in a file, with another string from a different file ...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need to replace one string, in a file, with another string from a different file ...
# 1  
Old 09-13-2009
Need to replace one string, in a file, with another string from a different file ...

Hi,
I have a requirement to extract a variable string (say S1) from a given file (say File-A), and look for a certain pattern to find another string (say S2) in another file (say File-B) and replace S2 with S1.

An example could be:
You have got two password shadow files -
1) shadow1
2) shadow2

These files are colon (":") seperated fields (like any "/etc/shadow" file has).
I now need to look for a user (say 'David'); user entry is the first field in both the shadow files (both of the shadow files are having multiple users along with the user 'David') and replace the second field in the shadow files (which is the actual encrypted password string) of file 'shadow1' with the corressponding field in file 'shadow2' for the user 'David.

Password strings could be of any lengths and may contain all kinds of possible characters.

An example of AWK/gawk script would be the most desired on which can be embedded/called from a bash script.

However any method of solving this problem using Linux bash will do well for me.

Thank you very much in advance.

Last edited by Praveen_218; 09-13-2009 at 10:01 AM..
# 2  
Old 09-13-2009
Please provide a sample of input files and desired output.
# 3  
Old 09-13-2009
my understanding about ur requirement is ...you are looking up the value from password file and matching with it on a different column...

awk -F":" 'NR==FNR{a[$1]=$2; next} NR!=FNR{if(a[$1])print $1," ",a[$1]; else print $0 }' file2 file1

this will list all the values of file1...Smilie
# 4  
Old 09-13-2009
Quote:
Originally Posted by know d unknown
my understanding about ur requirement is ...you are looking up the value from password file and matching with it on a different column...

awk -F":" 'NR==FNR{a[$1]=$2; next} NR!=FNR{if(a[$1])print $1," ",a[$1]; else print $0 }' file2 file1

this will list all the values of file1...Smilie
Thank you very much for your response.
However, somehow I received a syntax error at the position of 'else'.
# 5  
Old 09-13-2009
am sorry i dint get the error...
can you please give the complete error...
for the time being can you just try the following code

Code:
awk -F":" 'NR==FNR{a[$1]=$2; next} NR!=FNR{if(a[$1])print $1," ",a[$1]; }' file2 file1


Last edited by Franklin52; 09-13-2009 at 11:11 AM.. Reason: Please use code tags!
# 6  
Old 09-13-2009
Is it possible you left out the ; before the else? That would give a syntax error.
# 7  
Old 09-13-2009
hi vi,

Code:
awk -F":" 'NR==FNR{a[$1]=$2; next} NR!=FNR{if(a[$1])print $1," ",a[$1]; else print $0 }' file2 file1

which semicolon you are pointing to...i dint get you ???
i hav executed this command and it is working fine for me...
file1:
Code:
abc: 123
def: 456
ghi: pwd3

file2:
Code:
sam: ddd
def: pwd2
ram: mbo
abc: pwd1

O/P:
Code:
abc  pwd1
def   pwd2

hope this solves your problem

@vi_curious i think you are new to scripting i guess semicolon(Smilie always means enter or new line so that shouldnt be a prob...

Last edited by Franklin52; 09-13-2009 at 11:11 AM.. Reason: Please use code tags!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Search partial string in a file and replace the string - UNIX

I have the below string which i need to compare with a file and replace this string in the file which matches closely. Can anyone help me on this. string(Scenario 1)- user::r--,user::ourfrd:r-- String(Scenario 2)- user::r-- File **** # file: /local/Desktop/myfile # owner: me # group:... (6 Replies)
Discussion started by: sarathy_a35
6 Replies

2. 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

3. 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

4. UNIX for Dummies Questions & Answers

Search for a string,delete the line and replace with new string in a file

Hi Everyone, I have a requirement in ksh where i have a set of files in a directory. I need to search each and every file if a particular string is present in the file, delete that line and replace that line with another string expression in the same file. I am very new to unix. Kindly help... (10 Replies)
Discussion started by: Pradhikshan
10 Replies

5. Shell Programming and Scripting

find string and replace with string in other file

Dear all, I need your help, I have file like this: file1:23456 01910964830098775635 34567 01942809546554654323 67589 26546854368698023653 09778 58716868568576876878 08675 86178546154065406546 08573 54165843543054354305 . .file2: 23456 25 34567 26 67589 27 (2 Replies)
Discussion started by: attila
2 Replies

6. 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

7. UNIX for Dummies Questions & Answers

Search a string in the file and then replace another string after that position

Hi I am looking for a particular string in a file.If the string exists, then I want to replace another string with some other text.Once replaced, search for the same text after that character position in the file. :wall: E.g: Actual File content: Hello Name: Nitin Raj Welcome to Unix... (4 Replies)
Discussion started by: dashing201
4 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

How To Replace A String In File With A String Containing Windows File Path

Hi, I have a file with the following contents # Lines that start with a # are comments. # # Calling TOAD like this will perform a comparison from command line : # # "C:\Program Files\Quest Software\Toad for Oracle 9.6\toad.exe" -c... (2 Replies)
Discussion started by: rajan_san
2 Replies
Login or Register to Ask a Question