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 ...
# 8  
Old 09-13-2009
sample example files are:
//=====shadow1 (contains something like below)==========
Code:
David:$1$a6P/HWT1$3q/DkYchZEs4y420ESL6u.:14166:0:90:7:::
sarvani:$1$0wPwj2dB$GSHkbM9kcPZkGPTdKfZJP1:14293:0:90:7:::
stuart:$1$sPgpLdir$b9qcdXKeJ78zaZ2tpJuuA/:13924:0:90:7:::

//=============shadow1 (ends here)=======================


//=====shadow2 (contains something like below)==========

Code:
David:$1$FbP0lc8N$MIJ8outnkYyBedIYK7TJ6.:14500:0:90:7:::
sarvani:$1$0wPwj2dB$GSHkbM9kcPZkGPTdKfZJP1:14293:0:90:7:::

//=============shadow2 (ends here)=======================

Please note that password hashes of the user 'David' is different in shadow2.

What I need is a file in output called (say shadow3) as below

//=====shadow3 (contains something like below)==========
Code:
David:$1$FbP0lc8N$MIJ8outnkYyBedIYK7TJ6.:14166:0:90:7:::
sarvani:$1$0wPwj2dB$GSHkbM9kcPZkGPTdKfZJP1:14293:0:90:7:::
stuart:$1$sPgpLdir$b9qcdXKeJ78zaZ2tpJuuA/:13924:0:90:7:::


//=============shadow3 (ends here)=======================

Please note again that the output file contains a password hash from shadow2 file and rest is from shadow1.

Last edited by Praveen_218; 09-13-2009 at 12:03 PM.. Reason: Please use code tags!
# 9  
Old 09-13-2009
Code:
awk -F: -v OFS=":" 'NR==FNR{_[$1]=$2;next}_[$1]{$2=_[$1]}1' shadow2 shadow1

# 10  
Old 09-13-2009
Quote:
Originally Posted by know d unknown
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 ???
As far as I can see there is only one "else" so it should be obvious which ; I mean. OP said he was getting syntax error at "else" and I am pointing out one possible reason for it. He would get the same syntax error if he had inadvertently used a , instead of the ; .


Quote:
@vi_curious i think you are new to scripting i guess semicolon always means enter or new line so that shouldnt be a prob...
It is a problem if it's not there when it should be.
# 11  
Old 09-13-2009
the output which got:

Code:
awk -F":" 'NR==FNR{a[$1]=$2; next} NR!=FNR{if(a[$1])print $1," ",a[$1]; else print $0}' shadow2 shadow1
David   $1$FbP0lc8N$MIJ8outnkYyBedIYK7TJ6.
sarvani   $1$0wPwj2dB$GSHkbM9kcPZkGPTdKfZJP1
stuart:$1$sPgpLdir$b9qcdXKeJ78zaZ2tpJuuA/:13924:0:90:7:::

i dono why are you getting the error ??? if you could paste the error that would be greatful

Last edited by Franklin52; 09-13-2009 at 11:10 AM.. Reason: Please use code tags!
# 12  
Old 09-13-2009
Quote:
Originally Posted by know d unknown
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

awk -F":" 'NR==FNR{a[$1]=$2; next} NR!=FNR{if(a[$1])print $1," ",a[$1]; }' file2 file1
I ran your script on my Linux machine ; probably earlier I had a typo or something else.
# 13  
Old 09-13-2009
Try this:

Code:
awk -F":" -v user="David" 'NR==FNR{a[$1]=$2; next}$1==user{$2=a[$1]}1' OFS=":" shadow2 shadow1 > shadow3

Regards
# 14  
Old 09-13-2009
hi vi...

wen your replied
" Is it possible you left out the ; before the else? That would give a syntax error."

i have already posted two codes and i couldnt fig out which one u were pointing to...
moreover i thought you were asking me if the code was wrong...coz it was next to my reply... am sorry i dint get wat u were trying to explain at tat point...
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