Change the field color based on condition in email


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Change the field color based on condition in email
# 8  
Old 02-25-2019
What operating system are you using? -LINUX
What shell are you using?- bash
What terminal type are you using?- bash
What color do you want to use? RED
Under what condition(s) do you want to use this alternative color? - Here below in coloumn YX, if any value is greaterthan 0, color to YELLOW
Code:
SS|GE|GE|XX|YX
AP|0|0|-1|0
CP|56|0|0|56
CP|0|0|-9|0

What have you tried to accomplish this goal on your own?
Data is available in mariadb, i m selecting data and writing to R.txt separated by | delimiter

I have written below normal printing as table,
Code:
<cat R.txt|awk -F'|' 'BEGIN {print "<!DOCTYPE html><html><body><table border="1" width=75% cellspacing=0> <tr><th bgcolor='"$BGC"'>.....</tr>"}{print "<tr>";
for(i=1;i<=NF;i++)
{
print "<td> "$i"</td>
} />

Is a <tab> character supposed to be the field delimiter in your file? | is the delimter
Why is there a <tab> and a <space> between the XX and YX in the header line in the first line of your output? yes this is header
Why are there a bunch of <space>s instead of a <tab> between the -9 and the 0 in the last line of your output? while copying, spaces been added.
Is your input file in the same format as your output file?input is .txt output i m expecting html and yes, the sequence is same.
Will the YX field always be in the 5th field of your input file? If not how are we supposed to find it? yes it is 5th field




Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules

Last edited by RudiC; 02-25-2019 at 04:27 AM.. Reason: Added CODE tags.
# 9  
Old 02-25-2019
Sure your code will produce a valid HTML file?


Try this modification to your sample:

Code:
awk -F'|' '
BEGIN   {print "<!DOCTYPE html><html><body><table border=\"1\" width=75% cellspacing=0><tr><th bgcolor=\"YELLOW\">.....</tr>"
         AC="style=\"color:red;\""
        }
        {print "<tr>"
         for(i=1;i<=NF;i++)     print "<td " ((i==5 && $i>0)?AC:"") "> "$i"</td>"
        print "</tr>"
        }
END     {print "</body></html>"
        }
' R.txt

This User Gave Thanks to RudiC For This Post:
# 10  
Old 02-25-2019
Thank you Rudic, seems it is working, but it is not working if the value is comma separated.
<Eg:2,333,555> and it is working for <5.77>
# 11  
Old 02-25-2019
So - what would your conclusion be? What if you have 5,333,444?
# 12  
Old 02-25-2019
Quote:
Originally Posted by CatchMe
Thank you Rudic, seems it is working, but it is not working if the value is comma separated.
<Eg:2,333,555> and it is working for <5.77>
Of course it isn't. You said your input file was separated by | field delimiters; not by comma delimiters. That is why RudiC gave you code that started with:
Code:
awk -F'|'

If you're going to change the field delimiter, you have to change the field delimiter in the code that will be processing your new input file format too.
# 13  
Old 02-25-2019
This is my value in that column 5,333,444.89, such values it is treating as negative, becoz when i use <0 condition such values are all getting changed to RED and one more when i use align="right" in same condition in td it is not working.
# 14  
Old 02-25-2019
"it is not working" doesn't really help to analyse / debug, nor do moving targets. What do you think?

If you change the script / result and end up with it not working, it's not quite fair to blame the helpers in here. How about posting the entire new script and the entire new sample data?


The commas are "thousands separators", a concept unknown to awk. Those make the field a string, which, by default, should use all leading digits up to the first non-digit when evaluating the string. BTW, the script as given works for me: print in red if given the 5,333,444.89 in field 5.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with getting awk to multiply a field by a value set based on condition of another field

Hi, So awk is driving me crazy on this one. I have searched everywhere and read man, docs and every related post Google can find and still no luck. The actual files I need to run this on are sensitive in nature, but it is the same thing as if I needed to calculate weighted grades for multiple... (15 Replies)
Discussion started by: cotilloe
15 Replies

2. Shell Programming and Scripting

awk to change contents of field based on condition in same file

In the awk below I am trying to copy the entire contents of $6 there may be multiple values seperated by a ;, to $8, if $8 is . (lines 1 and 3 are examples). If that condition $8 is not . (line2 is an example) then that line is skipped and printed as is. The awk does execute but prints the output... (3 Replies)
Discussion started by: cmccabe
3 Replies

3. Shell Programming and Scripting

Help with awk color codes based on condition

HI i have two files say test and test1 Test.txt Code: Lun01 2TB 1.99TB 99.6% Lun02 2TB 1.99TB 99.5% Lun03 2TB 1.99TB 99.5% Lun04 2TB 1.55TB 89.6% Code: Test1.txt Lun01 2TB 1.99TB 89.5% Lun02 2TB 1.99TB 99.5% Lun03 2TB 1.99TB 99.5% Requirement is to compare... (6 Replies)
Discussion started by: venkitesh
6 Replies

4. Shell Programming and Scripting

How to change the color inside email using shell script?

hi, i want to send an email from unix using mailx command. mailx -s "subject" "email@abc.com" < email.txt Email.txt contains some file names that are transferred successfully and some that failed. so the files that got failed to tranfer, should be displayed in red color in the mail. is it... (1 Reply)
Discussion started by: Little
1 Replies

5. UNIX for Dummies Questions & Answers

How to change the background color in the init 3 mode(not line color)

Hello, I am using RHEL 6.1 on VMware I am searching for a way to change background color (not line by line color wich one can using tput command) basically changing the color of the whole screen to white instead of the default black and changing font color to black and alos would like to... (2 Replies)
Discussion started by: Dexobox
2 Replies

6. Shell Programming and Scripting

Color line based on first field

Hello, I have a bash script that outputs the following text to a file and then prints that file to the screen: |64 |30 |0 |8 |23:59:14 |38 |57 |2 |14 |00:09:05 |29 |50 |4 |20 |23:58:04 |20 |48 |7 |23 |00:05:44 |18 ... (2 Replies)
Discussion started by: fnj00
2 Replies

7. Shell Programming and Scripting

How can I change file value based on condition

Hi, Gurus, I got a problem to resolve following issue: I have one file file1as following: start_dt=2010-01-01 12:00:02 start_dt=2011-01-01 09:00:02 start_dt=2009-01-01 11:00:02I have another file file2 as following: title1, 2010-01-03 10:00:02 title2, 2011-01-04 11:00:02 title3,... (5 Replies)
Discussion started by: ken002
5 Replies

8. Shell Programming and Scripting

Help with Awk finding and replacing a field based on a condition

Hi everybody, I'm trying to replace the $98 field with "T" if the last field (108th) is T I've tried awk 'BEGIN{OFS=FS="|"} {if ($108=="T")sub($98,"T"); print}' test.txt but that doesn't do anything also tried awk 'BEGIN{OFS=FS="|"}{ /*T.$/ sub($98,"T")} { print}' test.txt but... (2 Replies)
Discussion started by: jghi123
2 Replies

9. Shell Programming and Scripting

Update a field in a file based on condition

Hi i am new to scripting. i have a file file.dat with content as : CONTENT_STORAGE PERCENTAGE FLAG: /storage_01 64% 0 /storage_02 17% 1 I need to update the value of FLAG for a particular CONTENT_STORAGE value I have written the following code #!/bin/sh threshold=20... (1 Reply)
Discussion started by: kichu
1 Replies

10. Shell Programming and Scripting

Change in Input feed based on condition file

Sorry Guys for not being able to explain in one of my earlier post. I am now putting my requirement with the input file and desired output file. In the below input file - Transaction code is at position 31:40. Business code is from position 318:321 TSCM00000005837 ... (7 Replies)
Discussion started by: varunrbs
7 Replies
Login or Register to Ask a Question