Hi.
Observations:
1) The operations of creating text tables and of coloring strings are separate issues.
2) Learning any language takes practice. We can help you with solutions, but it is up to you to read materials and do exercises to learn. The perl classes with which I was associated were for experienced programmers and were intensive multi-day classes that had many hands-on exercises. I suggest you attend such a class or search for a tutorial that suits your abilities and goals.
Here is a script that runs on HP-UX as noted:
#!/usr/bin/env bash
# @(#) s1 Demonstrate creating ASCII tables and coloring element.
# See:
# http://www.andre-simon.de/zip/ansifilter-1.7.tar.bz2
# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C perl ansifilter
# Function to color a string.
# call: color string-to-be colored file
color() {
escape="" # in vi, use control-v, then control-[ to get ascii ESC
red="${escape}[01;31m"
restore="${escape}[00m"
target=$1
file=$2
sed "s/$target/${red}&${restore}/" $file
}
FILE=${1-data1}
pl " Input data file $FILE:"
cat $FILE
rm -f f1 f2 f3.html
pl " Results, ASCIITable, ansifilter:"
tail -n+2 $FILE |
./p1 |
tee f1
ansifilter --bbcode f1 > f2
ansifilter --html f1 > f3.html
# Add a color to elements matching "defaulting"
color defaulters $FILE > data2
pl " Results, ansifilter with a color, console color:"
cat data2
rm -f f1 f2
pl " Results, ansifilter with a color, bbcode color:"
tail -n+2 data2 |
./p1 > f1
ansifilter --bbcode f1 > f2
cat f2
pl " Use of ASCIITable in perl script p1:"
cat p1
exit 0
producing:
$ ./s1
Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: HP-UX, B.11.11, 9000/785
Distribution : GenericSysName [HP Release B.11.11] (see /etc/issue)
GNU bash 4.2.37
perl 5.10.1
ansifilter - (local: ~/executable/ansifilter Apr 18 14:13 )
-----
Input data file data1:
parameter_name status comment
banking ok NA
finance 30% hike NA
Loan_department ok 20%
HR_Group defaulters Ajay
-----
Results, ASCIITable, ansifilter:
.----------------------------------------.
| parameter_name | status | comment |
+-----------------+------------+---------+
| banking | ok | NA |
| Loan_department | ok | 20% |
| HR_Group | defaulters | Ajay |
'-----------------+------------+---------'
-----
Results, ansifilter with a color, console color:
parameter_name status comment
banking ok NA
finance 30% hike NA
Loan_department ok 20%
HR_Group defaulters Ajay
-----
Results, ansifilter with a color, bbcode color:
.-----------------------------------------------------.
| parameter_name | status | comment |
+-----------------+-------------------------+---------+
| banking | ok | NA |
| Loan_department | ok | 20% |
| HR_Group | defaulters | Ajay |
'-----------------+-------------------------+---------'
-----
Use of ASCIITable in perl script p1:
#!/usr/bin/env perl
# @(#) p1 Demonstrate basic text table.
use Text::ASCIITable;
$t = Text::ASCIITable->new();
# $t->setCols( "c1", "c2", "c3", "c4", "c5", "c6", "c7" );
$t->setCols( "parameter_name", "status", "comment" );
# $t->setOptions({ hide_HeadRow => 1, hide_FirstLine => 1 });
while (<>) {
@a = split;
$t->addRow(@a);
}
print $t;
exit(0);
I obtained the source for ansifilter, compiled it on the HP, and executed it as noted in the script above.
There are many ways to add color to text strings. The sed solution above is relatively simple and straight-forward, but requires modification if you desire colors other than red.
Good luck ... cheers, drl
---------- Post updated at 14:28 ---------- Previous update was at 08:46 ----------
Hi.
Sorry, the sequence should have been create table, then apply color:
...
cp data1 data2
pl " Results, ansifilter with a color, bbcode color:"
tail -n+2 data2 |
./p1 > f1
color defaulters f1 > f2
ansifilter --bbcode f2 > f3
cat f3
producing:
.----------------------------------------.
| parameter_name | status | comment |
+-----------------+------------+---------+
| banking | ok | NA |
| Loan_department | ok | 20% |
| HR_Group | defaulters | Ajay |
'-----------------+------------+---------'
cheers, drl