gpt4 book ai didi

perl - 使用 bash/tail/perl/alias 轻松突出显示不同的字符串

转载 作者:行者123 更新时间:2023-11-29 09:34:49 25 4
gpt4 key购买 nike

我正在开发一个 tomcat 应用程序,希望能够搜索特定的东西并在查看日志时突出显示它。我想要一个类似于别名的东西,它将参数(正则表达式)作为输入并突出显示匹配的字符串。

到目前为止,我认为这是可行的,但它不够实用,每次我想要一些新东西时都必须更改它的一小部分:

tail -n 100 -f /opt/apache-tomcat-6.0.26/logs/catalina.out | perl -pe 's/null/\e[1;31m$&\e[0m/g'

这是我认为可行的方法:

logColor(){
x="'s/"
y="/\e[1;31m$&\e[0m/g'"
tail -n 100 -f /opt/apache-tomcat-6.0.26/logs/catalina.out | perl -pe $x$1$y
}
alias logC=logColor

我测试过这会打印出相同的两行:

logColorTest(){
x="'s/"
y="/\e[1;31m$&\e[0m/g'"
echo $x$1$y
echo "'s/null/\e[1;31m$&\e[0m/g'"
}
alias logCT=logColorTest
logCT null

所以我不知道为什么这不起作用,希望知道它是如何工作的人提供意见 :)

最佳答案

grep 的问题在于,您只会得到匹配的行,而其他行会被过滤掉。 (无论如何,这就是 grep 应该做的事情。)然而,很多时候,我们需要所有的输出,但要突出显示一些特定的字符串。

我的 .bashrc 中有这个小的 bash 函数来满足这样的要求:

mark () 
{
local searchExpr=${1/\//\\\/};
sed "s/$searchExpr/"`echo -n -e "\e[91;1m"`'&'`echo -n -e "\e[0m"`'/gi' $2
}

用法:

command | mark some_string # OR
mark some_string some_file

如果需要,重命名为合适的函数名称。

注意:有一个很棒的命令叫做highlight。因此我不能使用它作为我的函数名称。

关于perl - 使用 bash/tail/perl/alias 轻松突出显示不同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19313516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com