awk HTML Conditional Formating

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers awk HTML Conditional Formating
# 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-outputjpg
awk HTML Conditional Formating-text-format-outputjpg

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 or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with ... Formating the file using awk

I have a file like below position1 0 7802 7802 0 client1 - - position1 8 8032 8032 0 client1 ... (7 Replies)
Discussion started by: manas_ranjan
7 Replies

2. Shell Programming and Scripting

awk and HTML with conditional text colour

Hello All, I am using awk with html options to format and send output to another file. Below command works fine, no issues. awk 'BEGIN{print "<table border="1" width="1000" >"} {print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"} END {print "</table>"}' ${TMPLOGFILE1} >>... (0 Replies)
Discussion started by: jvmani_1
0 Replies

3. Shell Programming and Scripting

Conditional awk

Hello All, I have a file like this: bash-3.00$ cat 1.txt 201112091147|0|1359331220|1025 201112091147|0|1359331088|1024 201112091144|0|1359331172|1025 201112091147|0|1359331220|1021 201112091149|0|1359331088|1027 201112091144|0|1359331172|1029 and a list of MSISDNs in another file... (9 Replies)
Discussion started by: EAGL€
9 Replies

4. Shell Programming and Scripting

HTML mail formating in UNIX

Hi i need to send mail from my Unix server i used the below code. From: TTS.OO.Monitoring.Operations Subject: Error X-Mailer: htmlmail 1.0 Mime-Version: 1.0 Content-Type: text/html; charset=US-ASCII <HTML><head><style type='text/css'> table.altrowstable { font-family:... (6 Replies)
Discussion started by: mohanalakshmi
6 Replies

5. Shell Programming and Scripting

Formating output in html

Hi Guys, I was searching and landed up something here only. This is the code and I want the formatted html in email but that is not working, anybody knows the reason why? #!/bin/sh set -x DATE=`date -u` # Print beginning of webpage function html_header { cat <<END ... (5 Replies)
Discussion started by: bluemind2005
5 Replies

6. Shell Programming and Scripting

conditional statement in awk

Hi all, I have a file containing the values that would be use as the basis for printing the lines of another set of files using awk. What I want to do is something like the one below: stdev.txt 0.21 0.42 0.32 0.25 0.15 file1.txt file2.txt file3.txt ..filen.txt 0.45 0.23 ... (4 Replies)
Discussion started by: ida1215
4 Replies

7. Shell Programming and Scripting

formating sql file using awk or sed

Hi, I have a file where I would like to add a prompt type object_name statement before every create commnad create or replace force view test_view_01 ( col1 col2 col3 ) as (select a,b,c from sometable ); create or replace view test_view_02 ( col4 col5 col6 ) as (5 Replies)
Discussion started by: jville
5 Replies

8. Shell Programming and Scripting

AWK: formating number without printf

Hello, I wrote a script that does lot of things, and I would like to change the format of a number but without printing it now (so I don't want to use printf as it will print the value immediately). Schematically here is what I have: awk 'BEGIN{number=0.01234567} $1==$2{$3=number}... (5 Replies)
Discussion started by: jolecanard
5 Replies

9. Shell Programming and Scripting

Awk Conditional

Hi Guys, i have this files: xyz20080716.log opqrs20080716.log abcdef20080716.log xyz20080717.log oprs20080717.log abcde20080717.log currentdate: 20080717.log I want to make script to zip the file for past day. Can anyone help for this? i've just learn awk scripting & still confused with... (3 Replies)
Discussion started by: icy_blu_blu
3 Replies

10. Shell Programming and Scripting

AWK - conditional cause

Hello guys, I want to make a conditional cause in the following file using awk: awk '{ if ($2 != 0) print $1, $2, $3}' test.csv > test2.csv FILE EXAMPLE = test.csv string,number,date abc,0,20050101 def,1,20060101 ghi,2,20040101 jkl,12,20090101 mno,123,20020101 ... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies
Login or Register to Ask a Question