linux - tail 和 grep 文件以及按 IP 地址的独特颜色

标签 linux bash grep gnu tail

我坚持尝试为 tail -f 输出着色,以便每个 IP 地址的 IP 地址颜色是唯一的。我无法通过搜索找到任何内容。

这里有一些代码单独为当前 IP 地址着色,但每个 IP 的颜色都相同。

tail -f/var/www/domain.com/logs/global.log | egrep --color=auto '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[ [:digit:]]{1,3}'

我希望每个 IP 地址都有一种独特的颜色。这样您就可以区分用户。

我试过:

tail -f/var/www/domain.com/logs/global.log | GREP_COLOR='01;36' egrep --color -E '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{ 1,3}\.[[:digit:]]{1,3}|$'

我正在尝试找出一种根据 IP 定义颜色的方法,但我不确定如何继续。

但到目前为止,帮助不大。我在正确的路线上吗?干杯


结果

感谢下面的帮助,这是一个有效的编译答案

# Color ip address only
tail -f /var/www/file | perl -pe 's/\d{1,3}\.\d{1,3}.(\d{1,3})\.\d{1,3}/\033[38;5;\1\2\3m$&\033[39m/g'

我最常用的新

# Color entire line
tail -f /var/file.log | perl -pe 's/^.*(\d{1,3})\.(\d{1,3}).(\d{1,3})\.(\d{1,3}).*$/\033[38;5;\2\2\3m$&\033[39m/g'

最佳答案

在 perl 中有一个可能性:tail -f YOURFILE| perl -pe 's/\d{1,3}\.\d{1,3}.(\d{1,3})\.\d{1,3}/\033[38;5;\1\2\3m$&\033[39m/g'

它用基于其第三个八位字节的 ANSI 颜色序列替换每个 IP 地址查找子字符串。

它在 re2g 中工作相同: tail -f YOURFILE| re2g -gp '\d{1,3}\.\d{1,3}.(\d{1,3})\.\d{1,3}' -s $'\033[38;5 ;\\1\\2\\3m\\0\033[39m'

在 perl 中,你可以对你的颜色选择有一点兴趣:tail -f YOURFILE| perl -pe 's/(\d{1,3})\.(\d{1,3}).(\d{1,3})\.(\d{1,3})/"\033[38;5;".(16+($1+$2+$3+$4)%214)."m$&\033[39m"/ge'.此版本保证颜色落在良好的可见范围内,并且还基于所有四个八位字节的颜色。

另请参阅:https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

关于linux - tail 和 grep 文件以及按 IP 地址的独特颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320494/

相关文章:

c++ - 我如何让一个进程在 linux 中重新加载自己?

linux - Bash 将 awk 的输出捕获到数组中

bash - 有没有显示 bash 快捷方式的 bash 命令?

bash - 是否可以在 bash 脚本中检测 32 位和 64 位?

linux - 如何在unix中转置或旋转文本文件的数据?

python - Mac OS 上未显示菜单项

python - 继续开发已安装的应用程序

linux - shell 脚本: Increment seconds to date printed in logs

regex - 多行正则表达式搜索

linux - 使用 "grep"命令查找包含电话号码的txt文件