02-24-2009
Reading a file line by line and processing for each line
Hi,
I am a beginner in shell scripting. I have written the following script, which is supposed to process the while loop for each line in the sid_home.txt file. But I'm getting the 'end of file' unexpected for the last line. The file sid_home.txt gets generated as expected, but the script doesn't execute the instructions in the while loop:
#!/bin/ksh
cd /home/dba/utils/scripts/monitor
sed '/^#.*$/d' /var/opt/oracle/oratab | sed '/^[Cc]lient.*$/d' | sed '/^CRS.*$/d' | awk -F: '{print$1, $2;}' > sid_home.txt
{ while read LINE;do
ORACLE_SID=`awk '{print $1;}' $LINE`; export ORACLE_SID
ORACLE_HOME=`awk '{print $2;}' $LINE`; export ORACLE_HOME
DATE_TIME=`date +%m%d%y%a_%H%M`; export DATE_TIME
TSPALERT_LOG=tspalert_${ORACLE_SID}_${DATE_TIME}.log;export TSPALERTLOG
ORACLE_BASE=${ORACLE_HOME}; export ORACLE_BASE
ORACLE_BIN=${ORACLE_HOME}/bin; export ORACLE_BIN
LD_LIBRARY_PATH=/usr/openv/netbackup/bin:/usr/dt/lib:/usr/openwin/lib:/usr/local/lib:${ORACLE_HOME}/lib32
LD_LIBRARY_PATH_64=${ORACLE_HOME}/lib
ORACLE_DOC=${ORACLE_HOME}/orainst/doc
${ORACLE_HOME}/bin/sqlplus -s /nolog << EOF
set heading off
spool $TSPALERT_LOG;
select name from v$database;
select to_char(sysdate,'DD-MM-YYYY HH24:MI:SS') from dual;
select tablespace_name,sum(bytes)/1048576 MBUsed, sum(maxbytes)/1048576 TotalMB, sum(bytes)/sum(maxbytes)*100 PercentUsed
from dba_data_files
group by tablespace_name
having sum(bytes)/sum(maxbytes)*100 >= 80;
spool off
EXIT;
EOF
if [ -f ${TSPALERT_LOG} ]; then
echo "**ERROR**: TABLESPACE NEARLY FULL OR NOT ENOUGH ROOM FOR THE NEXT EXTENT IN ${ORACLE_SID}. Check log ${TSPALERT_LOG} " > /dev/null
mv ${TSPALERT_LOG} ${TSPALERT_LOG}.old > /dev/null
fi
done } < sid_home.txt
9 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi -
I have a file that contains data in this format:-
#comment
value1 value2 value3
#comment
value4 value5 value6 value7
#comment
value8 value9
I need to read value1, value2 and value3 into one array, value4 value5 value6 and value7 into another array and value8 and value9 into a 3rd... (2 Replies)
Discussion started by: sniper57
2 Replies
2. Shell Programming and Scripting
Hi Sorry to multipost. I am opening the new thread because the earlier threads head was misleading to my current doubt.
and i am stuck.
list=`cat /u/Test/programs`;
psg "ServTest" | awk -v listawk=$list '{
cmd_name=($5 ~ /^/)? $9:$8
for(pgmname in listawk)
... (6 Replies)
Discussion started by: Anteus
6 Replies
3. Shell Programming and Scripting
So, I want to read line-by-line a text file with unknown number of files....
So:
a=1
b=1
while ; do
b=`sed -n '$ap' test`
a=`expr $a + 1`
$here do something with b etc
done
the problem is that sed does not seem to recognise the $a, even when trying
sed -n ' $a p'
So, I cannot read... (3 Replies)
Discussion started by: hakermania
3 Replies
4. UNIX for Dummies Questions & Answers
So, the beginning of my script will cat & grep a file with the output directed to a new file. The data I have in this file needs to be parsed, read and evaluated.
Basically, I need to identify the latest date/time stamp and then calculate whether or not it is within 15 minutes of the current... (1 Reply)
Discussion started by: hynesward
1 Replies
5. Shell Programming and Scripting
Hi,
For my reuirement, I have to read a file from the 2nd line till the last line<EOF>.
Say,
I have a file as test.txt, which as a header record in the first line followed by records in rest of the lines.
for i in `cat test.txt`
{
echo $i
}
While doing the above loop, I have read... (5 Replies)
Discussion started by: machomaddy
5 Replies
6. Shell Programming and Scripting
I need some help. I would like to read in a text file.
Take a variable such as ROW-D-01, compare it to what's in one line in the text file such as PROD/VM/ROW-D-01 and only input PROD/VM into a variable without the /ROW-D-01.
Is this possible? any help is appreciated. (2 Replies)
Discussion started by: xChristopher
2 Replies
7. Shell Programming and Scripting
Hi,
i have a scenario were i should compare a few fields from each line then increment a variable based on that.
Example file
989878|8999|Y|0|Y|N|V
989878|8999|Y|0|N|N|V
989878|8999|Y|2344|Y|N|V
i have 3 conditions to check and increment a variable on every line
condition 1 if ( $3... (4 Replies)
Discussion started by: selvankj
4 Replies
8. Shell Programming and Scripting
Hi,
I want to read a live log file line by line and considering those line which start from time stamp;
Below code I am using, which read line but throws an exception when comparing line that does not contain error code
tail -F /logs/COMMON-ERROR.log | while read myline; do... (2 Replies)
Discussion started by: ketanraut
2 Replies
9. UNIX for Beginners Questions & Answers
Hi All,
i want to write a shell script read below file line by line and want to exclude the lines which contains empty value for MOUNTPOINT field.
i am using centos 7 Operating system.
want to read below file.
# cat /tmp/d5
NAME="/dev/sda" TYPE="disk" SIZE="60G" OWNER="root"... (4 Replies)
Discussion started by: balu1234
4 Replies