Home
Man
Search
Today's Posts
Register

If you're not sure where to post a Unix or Linux question, post it here. All unix and Linux beginners welcome in this forum!

awk HTML Conditional Formating

Login to Reply

 
Thread Tools Search this Thread
# 1  
Old 05-22-2018
awk HTML Conditional Formating

I am receiving the below output in text format. The output is converted to HTML table using the code mentioned below

output in text
Code:
LogDate  DayOfWeek/Hours     _0_     _1_     _2_     _3_     _4_     _5_     _6_     _7_     _8_     _9_    _10_    _11_    _12_    _13_    _14_    _15_    _16_    _17_    _18_    _19_    _20_    _21_    _22_    _23_
18/05/21  Mon                85.6    51.7    28.2    33.6    28.2    30.8    24.5    20.2    53.3    96.9    80.9    92.0    44.7    84.7    57.7    65.7    23.0    31.1    20.5    17.7    20.1    14.7    46.6    67.1

Task to be achieved
I would like to highlight only these value in yellow, red or green based on condition (75 to 100 red) (40 to 74 yellow) and (0 to 39 green). I am not able to achieve the same

Code:
85.6    51.7    28.2    33.6    28.2    30.8    24.5    20.2    53.3    96.9    80.9    92.0    44.7    84.7    57.7    65.7    23.0    31.1    20.5    17.7    20.1    14.7    46.6    67.1

Can someone please help me?

Here is the code am using

Code:
awk '
        BEGIN {
                print "From: "
                print "To:"
                print "MIME-Version: 1.0"
                print "Content-Type: text/html"
                print "Subject: CPU Utilization Report"
                print "<html><body></br></br>The report provides overall Percentage Of CPU utilization Hour wise on Production system.</br></br></br>"
                print "<table border=1 cellspacing=1 cellpadding=1>"
        }
         

!/^#/ && !/^S/ {
                print "<tr>"

                for ( i = 1; i <= NF; i++ )
                {
                                             
                        
                        if ($i <=75 && $i <=100 )
                                   print "<td> <b><FONT COLOR=RED FACE="verdana"SIZE=9 ></b>"  $i  "</td>"


                        else

                        if ($i <=40 && $i <=74 )

                                   print "<td> <b><FONT COLOR=Yellow FACE="verdana"SIZE=9 ></b>"  $i  "</td>"

                        else
                                   print "<td> <FONT COLOR=GREEN  FACE="verdana"SIZE=9 >" $i "</td>"


                }
                print "</tr>"
        }
        END {
                print "</table></body></html>"
        }

'  /Reports/output/Output.txt | /usr/sbin/sendmail -t

awk HTML Conditional Formating-output-jpg  
awk HTML Conditional Formating-text-format-output-jpg  


Last edited by Scrutinizer; 05-22-2018 at 03:39 PM.. Reason: adding actual output for better understanding; mod: added code tags
# 2  
Old 05-22-2018
On first sight, and without digging deeper, shouldn't the conditions be $i >=75 and $i >=40? Be aware that there's an undiscriminated gap: e.g. 74.5 won't satisfy any condition and thus might print in green.
# 3  
Old 05-22-2018
Digging just slightly deeper, note that assuming that values in your fields range from 0 through 100, the first if statement test:
Code:
 if ($i <=75 && $i <=100 )

will be satisfied only by values less than or equal to 75 (which does not seem to meet your conditions for displaying values in red. If I guessed correctly at the output you're getting, you might want to try replacing:
Code:
                        if ($i <=75 && $i <=100 )
                                   print "<td> <b><FONT COLOR=RED FACE="verdana"SIZE=9 ></b>"  $i  "</td>"


                        else

                        if ($i <=40 && $i <=74 )

                                   print "<td> <b><FONT COLOR=Yellow FACE="verdana"SIZE=9 ></b>"  $i  "</td>"

                        else
                                   print "<td> <FONT COLOR=GREEN  FACE="verdana"SIZE=9 >" $i "</td>"

with:
Code:
                        if (($i + 0) >= 75)
                                   print "<td> <b><FONT COLOR=RED FACE="verdana"SIZE=9 ></b>"  $i  "</td>"
                        else if (($i + 0) >= 40)
                                   print "<td> <b><FONT COLOR=Yellow FACE="verdana"SIZE=9 ></b>"  $i  "</td>"
                        else
                                   print "<td> <FONT COLOR=GREEN  FACE="verdana"SIZE=9 >" $i "</td>"

# 4  
Old 05-23-2018
Thank You

Thank you Don

The code provided is working properly and am getting the desired output.

Also thanks for explain my code if loop mistake.
Login to Reply

« Previous Thread | Next Thread »
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
awk and HTML with conditional text colour jvmani_1 Shell Programming and Scripting 0 04-26-2016 08:53 AM
HTML mail formating in UNIX mohanalakshmi Shell Programming and Scripting 6 07-17-2013 03:06 AM
Formating output in html bluemind2005 Shell Programming and Scripting 5 07-04-2013 11:39 AM
Mutt for html body and multiple html & pdf attachments raggmopp UNIX for Advanced & Expert Users 1 12-05-2012 11:18 PM
Removing all except couple of html tags from html file juubuntu Shell Programming and Scripting 0 06-21-2012 09:07 AM
Parsing HTML, get text between 2 HTML tags Mysthik Shell Programming and Scripting 1 04-14-2012 12:46 PM
Sending html email with html attachment sreenathkg UNIX for Dummies Questions & Answers 0 03-16-2012 11:18 AM
Send HTML body and HTML attachment using MUTT command vickramshetty Red Hat 2 05-11-2010 11:33 AM
shellinabox/html help to insert a keypress with an html button syadnom UNIX for Advanced & Expert Users 0 12-11-2009 11:31 AM
Sendmail with html attachment and html body sol_nov Shell Programming and Scripting 1 10-08-2009 09:39 PM


All times are GMT -4. The time now is 09:23 AM.

Unix & Linux Forums Content Copyright 1993-2018. All Rights Reserved.
UNIX.COM Login
Username:
Password:  
Show Password