![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Conditionally joining lines in vi | ifermon | UNIX for Dummies Questions & Answers | 0 | 06-04-2008 06:43 AM |
| search for the contents in many file and print that file using shell script | cdfd123 | Shell Programming and Scripting | 3 | 10-07-2007 07:17 PM |
| sed csv remove conditionally | Jae | Shell Programming and Scripting | 6 | 08-03-2007 12:29 PM |
| Email from script conditionally | dfb500 | Shell Programming and Scripting | 2 | 05-01-2007 10:01 AM |
| Creating file contents using contents of another file | ReV | Shell Programming and Scripting | 21 | 02-24-2006 07:25 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
How to update the contents in a file conditionally?
Hi All,
I have a data file which has two columns Location and the Count. The file looks like this India 1 US 0 UK 2 China 0 What I have to do is whenever I fails to login to Oracle then I have to add 1 to the count for that location. Whenever my script fails to login to Oracle for a particular location, the script needs to find the record for that location and then change the count. I should not change the count for all the locations, instead I need to change the count only for that location. Ex: Suppose if I am trying to login to Oracle for India location and fails to login then I have to update the count to 2. Your help will be greatly appreciated. Thanks in Advance Raju |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
Try this:
Code:
#!/usr/bin/ksh
while read country count; do
### try to login to oracle and set some error condition
if [ #the failure condition is set ]; then
count=$(($count+1))
fi
echo $country $count >> your_file.tmp
done < your_file
mv your_file.tmp your_file
|
|
#3
|
|||
|
|||
|
It will just append a line, what I want is I have to update that record only.
And one more thing is, how to get that count for a particular location. Thanks for your immediate responce. Raju |
|
#4
|
||||
|
||||
|
There are many ways to do this.
One way to do it is to write a temporary file in a directory each time a login fails. For example, your directory might look like: india.pid1 us.pid2 uk.pid3 As you can see you can append the process id to the origins to avoid filename collisions. Then, in a cron job, you can read the file names and add them up for each origin. Then, read the flat file where the previous values are stored into a array and add the new and old values, and write the new file. Make sure to clean up the directory of temporary files. You can also do this without an intermediate temporary file used as an IPC, in a single process, but if you have multiple login failures at one time, you will have have to implement file locking, which might be slower and more complex than a simple IPC like a temporary file. There are myriad ways to do this. I suggest you use an intermediate approach like I suggested to avoid problems if you get multiple login failures in bursts - having said that, you did not describe the software architecture where the actually login failure flag (detection) occurs. |
|
#5
|
||||
|
||||
|
Quote:
|
|
#6
|
|||
|
|||
|
Thank you very much.
Regards, Raju |
|||
| Google The UNIX and Linux Forums |