这是我在工作和家庭实验室使用的简单脚本,我希望根据一些条件添加彩色打印。
#!/bin/bash
echo "Enter Search Values Below (regex or plain)"
printf "\n"
echo "Enter IP/Hostname: "
read ip
printf "\n"
echo "Enter Matching Keyword: "
read val1
printf "\n"
echo "Enter Another Keyword (null if none): "
read val2
printf "\n"
echo "Enter Another Keyword (null if none): "
read val3
printf "\n"
echo "Enter Log File: "
read log
awk '$4 ~ /'$ip'/{for(i=1;i<NF;i++){ if( $i ~ '/.*'('$val1'|'$val2'|'$val3')'/'){count[$i]++}} }END{ for(x in count){ print count[x],x}}' /var/log/$log | sed 's/'^[0-9].*[0-9]$'/& >/' | cut -d ':' -f1
它是一个非常简单的单行程序,用于快速计算关键字在给定日志文件中出现的次数。这是示例执行和输出:
sh-3.2# sh /scripts/log_search.sh
Enter Search Values Below (regex or plain)
Enter IP/Hostname:
Anonymous.local
Enter Matching Keyword:
UDP
Enter Another Keyword (null if none):
Stealth
Enter Another Keyword (null if none):
netbios
Enter Log File:
appfirewall.log
1154 > netbiosd
5572 > UDP
598 > Stealth
如您所见,它会返回以下值,并显示给定关键字出现的关键字次数:
1154 > netbiosd
5572 > UDP
598 > Stealth
我想根据数值打印输出颜色。例如,如果该值出现超过3000次以红色打印,则如果1000&lt; x&lt; 3000以绿色打印,任何小于1000打印为白色。我怎样才能做到这一点?我不熟悉彩色打印,我发现了一些使用tput和setaf的建议,但是我不知道如何使用我的一个衬垫来实现它。这最好与sed或awk一起使用吗?如果你能提供一个例子,我将不胜感激。
答案 0 :(得分:1)
您可以将它们用作颜色变量
# Colors
txt_red="\033[31m" # Red
txt_green="\033[32m" # Green
txt_yellow="\033[33m" # Yellow
txt_blue="\033[36m" # Blue
txt_reset="\033[0m" # Reset the prompt back to the default color
并使用echo -e
以下是我dotfiles
的示例if (($? > 0)); then
echo -e "$txt_red""\n FAIL! There was a problem""$txt_reset"
exit 1
else
echo -e "$txt_green""\n Success! No errors\n""$txt_reset"
exit 0
fi