Grep the last line and put on mail subject


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep the last line and put on mail subject
# 1  
Old 03-06-2013
Grep the last line and put on mail subject

I have mail:
cat /home/oracle/scripts/dbsizedaily.txt | mail -s "$TODAY: PROD DB Size" $RECIPIENTS

I like to get and put USED_GB and %USED of the very last row from /home/oracle/scripts/dbsizedaily.txt.

/home/oracle/scripts/dbsizedaily.txt has :
HTML Code:
DATE      TIME       TOTAL_GB    USED_GB      %USED
......                     
03/05/2013 21:13 PM 3151.24316 2329.82947 73.9336619                        
03/05/2013 21:17 PM 3151.24316 2330.17322 73.9445703
so that e-mail subject that contain
"DATE: 03/06/13 - PROD DB Size: 2,330.17 GB - %USED:73.94"

Please advise.
# 2  
Old 03-06-2013
grep matches regular expressions, it doesn't understand concepts like the 'last line'.

awk does however. I'd try this:

Code:
awk '{ L=$0 } END { $0=L ; print "DATE: "$1,"PROD DB SIZE: "$5,"%USED:"$6 }' OFS=" - " /home/oracle/scripts/dbsizedaily.txt |
        mail -s "$TODAY: PROD DB Size" $RECIPIENTS

# 3  
Old 03-06-2013
OR use tail and cut to get those field values:
Code:
USED_DB=$(tail -1 /home/oracle/scripts/dbsizedaily.txt | cut -d' ' -f5)
USED_PC=$(tail -1 /home/oracle/scripts/dbsizedaily.txt | cut -d' ' -f6)

cat /home/oracle/scripts/dbsizedaily.txt | mail -s "$TODAY: PROD DB Size: $USED_DB - %USED: $USED_PC"

# 4  
Old 03-06-2013
Quote:
Originally Posted by bipinajith
OR use tail and cut to get those field values:
Code:
USED_DB=$(tail -1 /home/oracle/scripts/dbsizedaily.txt | cut -d' ' -f5)
USED_PC=$(tail -1 /home/oracle/scripts/dbsizedaily.txt | cut -d' ' -f6)

cat /home/oracle/scripts/dbsizedaily.txt | mail -s "$TODAY: PROD DB Size: $USED_DB - %USED: $USED_PC"

Is there any way to format the number into two decimals with a comma so that they show as PROD DB Size: 2,330.17 GB - %USED:73.94 rather than PROD DB Size: 2330.17322 - %USED: 73.9445703?
# 5  
Old 03-06-2013
You can use printf to format the number to 2 decimal places and include thousand separators:
Code:
USED_DB=$( printf "%'.2f" $USED_DB )
USED_PC=$( printf "%'.2f" $USED_PC )

---------- Post updated at 17:16 ---------- Previous update was at 17:13 ----------

From printf manual:
Code:
A block size specification preceded by `'' causes output sizes to be
displayed with thousands separators.  The `LC_NUMERIC' locale specifies
the thousands separator and grouping.  For example, in an American
English locale, `--block-size="'1kB"' would cause a size of 1234000
bytes to be displayed as `1,234'.  In the default C locale, there is no
thousands separator so a leading `'' has no effect.

# 6  
Old 03-06-2013
A little experiment:
Code:
awk 'END {print "\"DATE: "$1 "- PROD DB SIZE: ", $5+0, "- %USED:", $6-0, "\" ", REC |"mail -s"}' OFMT="%.2f" REC=$RECIPIENTS /home/oracle/scripts/dbsizedaily.txt

# 7  
Old 03-06-2013
I would recommend to use tail, cut, and printf, as previously suggested.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to grep a string and add to subject line of a mail?

I am running a mailx command as follows in Linux: mailx -s "Elapsed Time: " ora_dbas < $RUNDIR/sql_timings.out I am trying to parse the file "sla_local_sql_timings.out" for the word Elapsed Time: and get the time from that file stored in a variable and display that variable in the subject... (4 Replies)
Discussion started by: vrkcamry
4 Replies

2. Shell Programming and Scripting

Subject line missing while sending mail

Hi, I have below script PROJECT_NAME=UDL/UDL_Weekly sub= echo ${PROJECT_NAME}|cut -d "/" -f2 cat pr.sh|mail -s "`hostname`: $sub failed" sonu.pal@xyz.com While running the script I am receiving the subject line in mail as " podetlsapp01: failed' instead of " podetlsapp01: ... (1 Reply)
Discussion started by: sonu_pal
1 Replies

3. Shell Programming and Scripting

how to put subject and body to mail from two files

Hi all, My sample file is something like this, ORA-00206: Message 206 not found; product=RDBMS; facility=ORA ORA-00202: Message 202 not found; product=RDBMS; facility=ORA ORA-27063: Message 27063 not found; product=RDBMS; facility=ORA ORA-00206: Message 206 not found; ... (1 Reply)
Discussion started by: sri1977
1 Replies

4. Programming

Perl - how to put to the next line if I have same pattern in one line

Dear All, Could you help me how to put to the next line if I have pattern below in Perl language. Data-123 Linux MacOSData-124 windows FreeBSDData-125 OpenBSD NetBSD I would the output below: Data-123 Linux MacOS Data-124 windows FreeBSD Data-125 OpenBSD NetBSD ... (2 Replies)
Discussion started by: askari
2 Replies

5. Shell Programming and Scripting

Remove line based on string and put new line with parameter

Hi Folks, I am new to ksh, i have informatica parameter file that i need to update everyday with shell script. i need your help updating this file with new parameters. sample data $$TABLE1_DATE=04-27-2011 $$TABLE2_DATE=04-23-2011 $$TABLE3_DATE=03-19-2011 .......Highligned... (4 Replies)
Discussion started by: victor369
4 Replies

6. Shell Programming and Scripting

ls | grep (i dont know what to put here)

Dear users, I googled for a while, but i have got a lot of different answers regarding a simple unix command. lets say there are a lot of files in a directory. How can i list the files in a directory whose file types is "text"? Thank you in advance (4 Replies)
Discussion started by: kevincobain2000
4 Replies

7. UNIX for Advanced & Expert Users

ps avg | grep ? filter the desired out put.

Hi Folk, Following is the command I used to get data related to the DataFlowEngine. I wanted to know the % usage of cpu and memory. ps avg | grep Data This command will show the processes with its PID as : PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND ... (1 Reply)
Discussion started by: varungupta
1 Replies

8. Shell Programming and Scripting

Grep strings from file and put in Column

Dear Experts, My file contains below- GET:SUB:ISI,432350414557432; RESP:0:MD,019352020633:ISI,432350414557432:T11,1:T21,1:T22,1:B16,1:T62,1:BAIC,0:BAOC,1:BOIC,0:BIRO,0:BORO,0:PAID,1; GET:SUB:ISI,432350414581060;... (2 Replies)
Discussion started by: thepurple
2 Replies

9. Shell Programming and Scripting

Grep command is not working when put into cron

Hi, I worte a script which runs perfect when i execute it manually. But when i scheduled into cron the grep command alone is not working. the sample script, /usr/bin/grep FTP $subfile > /tmp/tfsrec.dat tfs=`echo $?` if then echo "FTP FOUND" else echo "FTP NOT FOUND" Where... (5 Replies)
Discussion started by: thiru_cs
5 Replies

10. Shell Programming and Scripting

Put the output of grep in a variable

Hi, in a shell script how can I put the result of a grep command in a variable : myvariable=grep mystring myfilename Thank you. (3 Replies)
Discussion started by: big123456
3 Replies
Login or Register to Ask a Question