Ed to modify a file --- or not?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Ed to modify a file --- or not?
# 1  
Old 05-19-2017
Ed to modify a file --- or not?

Running Oracle Linux 6 (derivative of RHEL 6)

Given this snippet of code in a shell script:

Code:
#-- reset oratab to use 11.2 home for dwdev
#--  normally we'd just use sed to do this sort of thing, but that would
#--  require permissions that we don't have in the /etc/ directory, so we
#--  use 'ed' instead.
echo =======================================================
echo `date +%Y-%m-%d" "%H:%M:%S` - Modifying /etc/oratab
echo Original oratab entry for dwdev:
grep ^dwdev /etc/oratab
ed -s /etc/oratab <<EOF
,s|dwdev:/u01/app/oracle/product/12.1.0.2/dbhome_1:N|dwdev:/u01/app/oracle/product/11.2.0.4/dbhome_1:N|
w
q
EOF
echo New oratab entry for dwdev:
grep ^dwdev /etc/oratab

The output looks exactly as I expect, and the rest of the script, that is depending on these settings, behaves exactly as planned. Here's the output through that section:
Code:
2017-05-19 12:51:28 - Modifying /etc/oratab
Original oratab entry for dwdev:
dwdev:/u01/app/oracle/product/12.1.0.2/dbhome_1:N# line added by Agent
New oratab entry for dwdev:
dwdev:/u01/app/oracle/product/11.2.0.4/dbhome_1:N# line added by Agent

However, when the script is complete, I go back and check the contents of the subject file (/etc/oratab) and it is back to its original:

Code:
oracle:dwdev$ grep ^dwdev /etc/oratab
dwdev:/u01/app/oracle/product/12.1.0.2/dbhome_1:N               # line added by Agent

The rest of the script is pretty lengthy and involved, but I see nothing else in it that could conceivably modify the file /etc/oratab
# 2  
Old 05-19-2017
From the output you have shown us, it appears that ed is doing what you requested. So, if the contents of /etc/oratab have gone back to their original state when the script terminates, it would seem likely that has modified the file.

If the command:
Code:
grep oratab scriptname

where scriptame is the name of the file containing your shell script doesn't show any output other than:
Code:
echo `date +%Y-%m-%d" "%H:%M:%S` - Modifying /etc/oratab
echo Original oratab entry for dwdev:
grep ^dwdev /etc/oratab
ed -s /etc/oratab <<EOF
echo New oratab entry for dwdev:
grep ^dwdev /etc/oratab

then one might guess that:
  1. something in your script invokes another command that resets /etc/oratab's contents,
  2. there is another directory entry hard-linked to /etc/oratab and your script is modifying the file using a different filename,
  3. there is another file that is a symbolic link pointing to /etc/oratab and your script is modifying the file using the name of one of those symbolic links, or
  4. some other script is asynchronously changing the contents of /etc/oratab that seems to run consistently between the time the second grep in your code shows that the file changed and the time when you notice that the contents have reverted to their original contents after your script terminates.
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 05-22-2017
Don - thanks for the reply. Except for the idea of the links, that what I would have thought. Since this is a vm I build myself, I know there are no links involved, nothing else in the script to modify the file, and no other scripts running. In cutting down the script for a 'proof demo' with lots of debugging 'echo' messages, I do find that the change happens during/after invoking sqlplus to shut down the database. At that point, probably best if I take the issue to an Oracle forum. I'll post back here what I find out, to give closure to the thread.
This User Gave Thanks to edstevens For This Post:
# 4  
Old 05-23-2017
Confirmed, issue is a background task involved with Oracle Grid Infrastructure.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Modify CSV file

Hi, I would like to change my CSV file by adding " and : and moving some of the information around. the CSV file looks as follows: 501254424;500440257;PE PACKS;300467279;PREP;;276476070;655031001867176;Two Block;Olga;25/12/2015 00:00:00;Olga I would like to move the field 7 to the front "... (13 Replies)
Discussion started by: omuhans123
13 Replies

2. Shell Programming and Scripting

File modify

Hi All I am getting a file with below pattern - 00150366 05/08/2015 07:14:32 8000186167+++ 50195281000000000371001010903236 800186167+++ 100209000000000 800000018617+++ 50295281000000000371001010900217================================3u4398482344334=432434 00150367 05/08/2015 07:14:32... (7 Replies)
Discussion started by: honey26
7 Replies

3. Shell Programming and Scripting

Modify a file by another file: add new line and variable after string is found

hello, I have problem with writing/adjusting a shell script. I searched forum and unfortunately couldn't write scipt based on the information I found. I never wtire such so it's hard for me and I do need to modify one script immediately. case looks like: 1. 'file' that needs to be modified... (3 Replies)
Discussion started by: bipbip
3 Replies

4. Shell Programming and Scripting

ksh- redirect stderr to file and then modify the file

I have the following: remsh $host -n 2>>syslog_issue_list.txt grep -i -e "EMS" -e "error" -e "warning" -e "excessive" /var/adm/syslog/syslog.log | awk /"$DATE1"/ | awk -vhost="$host" '!/remsh|telnetd/{print host "\n", $0 >> "syslog_issue_list.txt"}' I am creating a health script that has... (4 Replies)
Discussion started by: chipblah84
4 Replies

5. Shell Programming and Scripting

Modify file

Hi, I have a file that looks like this: 27+:<10,289808,1> 31+:<11,1445372,1> 33-:<7,1014101,2> 35+:<11,728811,1> 36-:<11,1445205,0> 37+:<11,1445792,2> and I want to change it to this: + 10 289808 + 11 1445372 - 7 1014101 + 11 728811 - 11 1445205 + 11 1445792 (3 Replies)
Discussion started by: kylle345
3 Replies

6. Shell Programming and Scripting

Perl : how to modify a file without generate a temporary file

Hi All, I have a file like below, how can i insert one line after line 1 without using a temporary file in perl? line 1 line 2 line 3 expected result line 1 new line <---insert here line 2 line 3 (2 Replies)
Discussion started by: summer_cherry
2 Replies

7. UNIX for Dummies Questions & Answers

Modify Text File

Hi, I would like to remove any lines from a text file that begin with #, or that are blank. How can I do that with BASH? Mike (3 Replies)
Discussion started by: msb65
3 Replies

8. Shell Programming and Scripting

Modify a file

Hi all Can anyone suggest me a good solution ? My requirement is as follows I have a plain text file similar to this... sending data to 0003345234 here is the output... ,.......... ........... ....... sending data to 00033452ab here is the output... ,.......... ........... .... (5 Replies)
Discussion started by: ./hari.sh
5 Replies

9. Shell Programming and Scripting

Can I modify the .bashrc file instead of .profile file to customize my login?

Hello, I got this question which tells me to customize my login script. Some people in the forums suggested to modify the .profile file in my home directory. I did so, but none of my customizations show up when I open the terminal after. So, I tried to modify other files in my home directory,... (1 Reply)
Discussion started by: Hyunkel
1 Replies

10. Shell Programming and Scripting

modify a file

I'm a new member of the forum, I had this new generate file since I use 'grep' and 'awk', what I want to do is get rid off the all 0s before the numbers, is there any one who could help me to figure it out? Thanks a lot! yun 0000000029 000q7472 2002/03/01 0000000030 000q7472 2002/03/01 ... (2 Replies)
Discussion started by: yxiao
2 Replies
Login or Register to Ask a Question