Problem updated file with new entries


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem updated file with new entries
# 8  
Old 10-26-2009
OK in that case, if your sed has the -i option you could do something like:
Code:
#!/bin/sh
cp -p FileB FileB.new
while read old new; do
  sed -i "s/$old$/$new/" FileB.new
done < FileA

though a tad expensive, continually updating fileB.new, but I think less expensive than two read loops...

With awk it is more efficient and faster too.
Code:
awk 'NR==FNR {A[$1]=$2;next} A[$3]{$3=A[$3]} 1' FileA FileB > FileB.new

And alternatively with ksh it is efficient and fast too:

Code:
#!/bin/ksh
typeset -A newname;
while read old new; do
  newname[$old]=$new
done < FileA

while read field1a field1b empl; do
  if [[ -n ${newname[$empl]} ]]; then
    empl=${newname[$empl]}
  fi
  echo "$field1a $field1b $empl"
done < FileB > FileB.new

# 9  
Old 10-27-2009
I like the awk approach. How can I use the awk statement for FileA that is 50 lines long?
# 10  
Old 10-27-2009
That is a tiny file. You can use any method you like. Just try it out.
# 11  
Old 10-30-2009
Ok. I used the awk statement (nice!) but this statement only changes the first occurs of the old name to the new name. Any suggestions?

Thanks,
Anthony
# 12  
Old 10-31-2009
Hi pitccorp01, what is the format of fileB then? I thought it was:
Code:
Employee name: old_name1
Employee name: old_name2
Employee name: old_name3

In which case you only need one replacement since there is only one occurrence per line.
# 13  
Old 10-31-2009
My apologies! I gave you the condensed version of FileB. Here is the format of FileB in its entirety:

*/------------------Employee name 1 ---------------------*/
Employee name1:
Address:
City State:
Telephone Number:
Cellular Number:
Department:
Manager:

*/------------------Employee name 2---------------------*/
Employee name2:
Address:
City State:
Telephone Number:
Cellular Number:
Department:
Manager:


The above is repeat for the next employee

FileA contains which employees will be substituted for new employees.

Thanks,
Anthony
# 14  
Old 10-31-2009
But that is still only one field per line. I don't understand why that would not work or what would not work. Can you show me an anonymized sample of what it does to your input? Can you give me an anonymized sample of FileA as well?

Last edited by Scrutinizer; 10-31-2009 at 01:06 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Copy the last part since the file has been updated

Input File1 constatntly running and growing in size. My Program Erorr ddmmyy hh:mm:ss My Program Error **Port 123 terminated **ID PIN 12345 Comamnd Successful Command Terminated Command Successful Command Terminated **My Program Erorr ddmmyy hh:mm:ss My Program Error **Port 345... (3 Replies)
Discussion started by: eurouno
3 Replies

2. Shell Programming and Scripting

Is there any command to know what updated last in file?

Is there any command to know what updated last in file? (3 Replies)
Discussion started by: anuragpgtgerman
3 Replies

3. Shell Programming and Scripting

Search for a recently updated file

Hi, I am looking for a command to search for a specific file which was recently modified in the current directory leaving some unwanted files to be listed. For example, when I try ls - lrt it shows the following output. I want to ommit the files with the name 'resend' and... (3 Replies)
Discussion started by: svajhala
3 Replies

4. Shell Programming and Scripting

trying to check if the file is getting updated or not

#!/bin/sh #set -x Current_Date=`date +"%b %e"` Filepmdate=`ls -ltr /file/ | tail -5 | awk '{print $6,$7}'` if ; then echo " " exit 0 else echo "Log files are not updated please check" exit 0 fi done > sh -x l12.sh + + date +%b %e Current_Date=Aug... (2 Replies)
Discussion started by: arch12
2 Replies

5. Shell Programming and Scripting

Script to wait until file is updated

Hello, I need to evaluate (under BASH) if the certain file has been updated or not. If the file still wasn't updated, script should wait. The script picks up the time stamp of the file using command OldTimestamp=$(date -r $MyDir/$MyFile), but I don't know how to code a waiting loop with new and... (6 Replies)
Discussion started by: sameucho
6 Replies

6. Shell Programming and Scripting

If File has been updated, do something??

Put this together from somewhere else on the forums, just modified it and added the loop. #!/bin/ksh localFile=$1 remoteFile=$2 #source FTP parameters . .ftp_put.cfg mylog=ftp_session.log echo "$(date "+%H:%M:%S") - Attempt to FTP $1 to $2" > $mylog machine="server1 server2... (5 Replies)
Discussion started by: cbo0485
5 Replies

7. Programming

Log file not getting updated

hi all, i'm a student and managing lab at my insti. there in one application in which log file has to be maintaine the number of bytes transferred and received. but after certain entries these two attributes stop getting updated and holds same values for rest of the session. This happens one time... (4 Replies)
Discussion started by: KornFire
4 Replies

8. UNIX for Dummies Questions & Answers

Find last updated file

Hi all, my problem is teh following: I need to move a file from a folder to another and I usually do it by the get command but in this case I have a list of file in the source folder and I have to select only the lust updated one. Ho to do this? All the files have the same name followed... (4 Replies)
Discussion started by: callimaco0082
4 Replies

9. Solaris

which file is updated after modified the crontab entries.

Hi all, i want to know which file is updated after changes the modifications/new entries in crontab. Please help regarding this. regards Krishna (1 Reply)
Discussion started by: krishna176
1 Replies

10. Shell Programming and Scripting

Creating an updated file

Hi, I would like to define a script in order to update a file with the last updated records: I wrote : #!/bin/sh YEAR=$(date +%Y) MONTH=$(date +%m) DAY=$(date +%d) COMM=/usr/bin/comm for file in * ; do if ] ; then FILE=${DPSTY} UNIQUE=Unique_${FILE} ... (4 Replies)
Discussion started by: dbfree
4 Replies
Login or Register to Ask a Question