Ada*_*eld 13
管的输出tail -f
入sed
,并在一些添加ANSI转义码.例如,以下内容将使用红色(颜色31)和所有带亮黄色的颜色(颜色93)的所有数字着色:
RED=`echo -en '\e[31m'`
YELLOW=`echo -en '\e[93m'`
RESET=`echo -en '\e[00m'`
tail -f file | sed -E "s/([0-9]+)/$RED\1$RESET/g;s/(\"[^\"]*\")/$YELLOW\1$RESET/g"
Run Code Online (Sandbox Code Playgroud)
我认为你正在寻找的是某种形式 sed
脚本,它将围绕您使用ANSI Color转义序列选择的单词.(嗯...... lemme看).
编辑好了,得到了:
以下是以暗红色输出"Hello"的示例:
echo -e "\033[31mHello\033[0m"
Run Code Online (Sandbox Code Playgroud)
发生了什么?首先,我使用echo -e
,使echo
不上的斜线转换成屏幕上的斜线,而是读的转义序列\033
作为一个转义字符.这实际上只是十进制的33,即27(ESC键的序数).
那么真正被发送到屏幕的是:
<ESC>[32mHello<ESC>[0m
Run Code Online (Sandbox Code Playgroud)
其中ANSI显示解释为"首先执行命令32m
,输出"Hello",然后执行命令0m
.
在这种情况下,命令 32m
意味着"将地面颜色设置为2",并且由于颜色#2是深红色,因此终端使用的"笔"现在将是深红色.这意味着从这一点开始,屏幕上显示的所有文本都将显示为深红色.
当我们输出应该是红色的文本时,我们希望重置颜色,因此我们调用0m
将颜色重置为正常的命令.
有关所有转义码的列表,请查看[ http://en.wikipedia.org/wiki/ANSI_escape_code维基百科]或只是谷歌搜索它.
所以你的sed脚本所要做的就是用颜色包围的单词替换你选择的单词.例如,要替换单词"Feb" /var/log/messages
,请执行以下操作:
tail /var/log/messages | sed -e "s/Feb/\\o033[31m&\\o033[0m/"
Run Code Online (Sandbox Code Playgroud)
(您可能必须以root身份执行此操作才能实际阅读 /var/log/messages
)
所有这一切sed
确实是搜索词"二月",并用相同的转义序列围绕着它,因为我们上面使用.
您可以将其展开为多个单词着色:
tail /var/log/messages | sed -e "s/\(Feb\|Mar\|Apr\)/\\o033[31m&\\o033[0m/g"
Run Code Online (Sandbox Code Playgroud)
哪个颜色为"2月","3月","4月" - 每个都是深红色.
我希望这可以让你知道如何做你需要的!