Visit Our UNIX and Linux User Community


Help with awk color codes based on condition


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with awk color codes based on condition
# 1  
Old 01-02-2017
Help with awk color codes based on condition

HI

i have two files say test and test1

Test.txt
Code:
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
Code:
Lun01	2TB	1.99TB	89.5%
Lun02	2TB	1.99TB	99.5%
Lun03	2TB	1.99TB	99.5%

Requirement is to compare Test.txt and Test1.txt and highlight the content to red color in Test.txt which is not there in Test.txt

Expected output.
Code:
Code:
Lun01	2TB	1.99TB	99.6%
Lun04        2TB   1.55TB       89.6%
Lun02	2TB	1.99TB	99.5%
Lun03	2TB	1.99TB	99.5%

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

Last edited by RudiC; 01-02-2017 at 11:49 AM.. Reason: Added CODE tags.
# 2  
Old 01-02-2017
Quote:
Originally Posted by venkitesh
highlight the content to red color in Test.txt which is not there in Test.txt
I guess you meanin Text1.txt.

Why reordering the lines in your expected output?
# 3  
Old 01-02-2017
hi

sorry its test1.txt.

reordering is not required.

just highlighting of red color is enough
# 4  
Old 01-02-2017
Hello venkitesh,

Could you please try following and let me know if this helps you.
Code:
awk 'FNR==NR{A[$1,$NF]=$0;next} (($1,$NF) in A){print} !(($1,$NF) in A){print "\033[31m"$0"\033[0m";}' test1.txt test.txt

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 5  
Old 01-02-2017
Hi Ravinder,

works like a charm in the terminal.

But i am converting this in html and sending via sendmail

this is what i am getting in outlook.

Code:
[31mLun01	      2TB	1.99TB	99.6% [0m 
[31mLun04              2TB     1.55TB       89.6% [0m

plz find my bash script

Code:
awk 'FNR==NR{A[$1,$NF]=$0;next} (($1,$NF) in A){print} !(($1,$NF) in A){print "\033[31m"$0"\033[0m";}' test1 test > finaloutput

awk ' BEGIN {
 print "From:test@test.com"
 print "To:test@test.com"
 print "Subject: CRITICAL"
 print "MIME-Version: 1.0"
 print "Content-Type: text/html"
 print "<body bgcolor=\"#ffffff\" text=\"#000000\">"
 print "<html><body><table border=1 cellspacing=0 cellpadding=3>"
 print "<tr>"
 print "<td>LUN NAME</td>";
 print "<td>TOTAL SPACE</td>";
 print "<td>USED SPACE</td>";
 print "<td>USED %</td>";
 print "</tr>"
} {
 print "<tr>"
 print "<td><font face=verdana size=2 color=green>"$1"</td>";
 print "<td><font face=verdana size=2 color=green>"$2"</td>";
 print "<td><font face=verdana size=2 color=green>"$3"</td>";
 print "<td><font face=verdana size=2 color=green>"$4"</td>";
 print "</tr>"
} END {
 print "</table></body></html>"
} ' finaloutput | sendmail -t

# 6  
Old 01-02-2017
Color code needs to be added to your generated HTML as outlook doesn't support ANSI escape sequences try:

Code:
awk '
BEGIN {
 print "From:test@test.com"
 print "To:test@test.com"
 print "Subject: CRITICAL"
 print "MIME-Version: 1.0"
 print "Content-Type: text/html"
 print "<body bgcolor=\"#ffffff\" text=\"#000000\">"
 print "<html><body><table border=1 cellspacing=0 cellpadding=3>"
 print "<tr>"
 print "<td>LUN NAME</td>";
 print "<td>TOTAL SPACE</td>";
 print "<td>USED SPACE</td>";
 print "<td>USED %</td>";
 print "</tr>"
}
FNR==NR {A[$0];next}
{
 if($0 in A) C="green"
 else C="red"
 print "<tr>"
 for(i=1;i<=4;i++) print "<td><font face=verdana size=2 color=" C ">" $i "</td>";
 print "</tr>"
}
END { print "</table></body></html>"} ' test1.txt test.txt | sendmail -t

This User Gave Thanks to Chubler_XL For This Post:
# 7  
Old 01-03-2017
hi all

worked perfectly

thanks

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk to add +1 to value based on condition in input

In the awk below I am trying to add a | that will adjust $2 in the ouput by adding +1 if the original value from file that was used in $3 had a - in it. Line 3 of file is an example of this. In my current awk I just subtract one but I am not sure how to only apply this to those values without a -.... (5 Replies)
Discussion started by: cmccabe
5 Replies

2. UNIX for Beginners Questions & Answers

Change the field color based on condition in email

Request your help to change the field color based on condition , if it is otherthan 0. using html in unix. Here is my condition for(i=1;i<=NF;i++) { print "<td> "$i"</td> } Please use CODE tags when displaying sample input, output, and code segments. (17 Replies)
Discussion started by: CatchMe
17 Replies

3. Shell Programming and Scripting

awk to reformat lines based on condition

The awk below uses the tab-delimeted fileand reformats each line based on one of three conditions (rules). The 3 rules are for deletion (lines in blue), snv (line in red), and insertion (lines in green). I have included all possible combinations of lines from my actual data, which is very large.... (0 Replies)
Discussion started by: cmccabe
0 Replies

4. Shell Programming and Scripting

Remove line based on condition in awk

In the following tab-delimited input, I am checking $7 for the keyword intronic. If that keyword is found then $2 is split by the . in each line and if the string after the digits or the +/- is >10, then that line is deleted. This will always be the case for intronic. If $7 is exonic then nothing... (10 Replies)
Discussion started by: cmccabe
10 Replies

5. Shell Programming and Scripting

awk to ignore multiple rows based on a condition

All, I have a text file(Inputfile.csv) with millions of rows and 100 columns. Check the sample for 2 columns below. Key,Check A,1 A,2 A, A,4 B,0 B,1 B,2 B,3 B,4 .... million rows. My requirement is to delete all the rows corresponding to all the keys which ever has at least one... (4 Replies)
Discussion started by: ks_reddy
4 Replies

6. UNIX for Dummies Questions & Answers

Display file with escaped color codes

Hi, I have a file containing color codes: Fri May 25 17:13:04 2012: Starting MTA: exim4^ Loading cpufreq kernel modules...^How can I display it colorized on a linux terminal? (4 Replies)
Discussion started by: ripat
4 Replies

7. Programming

Using ANSI color codes in gcc compiled program

I have put some yellow color codes and works well. I call the funstion using print_usage(stderr, 0); I would like to know if there is any way, to store the ansi color codes in variables and then call them inside fprintf. Or have a format followed by the strings I want to output. ... (5 Replies)
Discussion started by: kristinu
5 Replies

8. UNIX for Dummies Questions & Answers

Regular expression on hex color codes

I want to have all hex color codes in a given stylesheet in uppercase, so #fff should be converted to #FFF for instance. Here is the regular expression I use to match and convert hex color codes to uppercase: sed -e 's/^#({3}$)|({6}$)/^#({3}$)|({6}$)/' main.css However, no conversion to uppercase... (6 Replies)
Discussion started by: figaro
6 Replies

9. UNIX for Dummies Questions & Answers

Using color escape codes in less

Hi all, Not sure how "for dummies" this question is, but I'd better use understatement... A. My Environment ============== I am using RedHat Linux, version 2.6.18-53.el5. When I type less --version I get: less 394 Copyright (C) 1984-2005 Mark Nudelman ... My terminal is configured... (1 Reply)
Discussion started by: Source2Exe
1 Replies

10. Shell Programming and Scripting

awk script to split a file based on the condition

I have the file with the records like 4234234 US phone 3244234 US cup 2342342 CA phone 8947234 US phone 2389472 CA cup 2348972 US maps 3894234 CA phone I want the records with (US,phone) as record to be in one file, (Us, cup) in another file and (CA,cup) to be in another I mean all... (12 Replies)
Discussion started by: superprogrammer
12 Replies

Featured Tech Videos