Bash 如何在sed中创建颜色匹配模式

Bash 如何在sed中创建颜色匹配模式,bash,function,shell,sed,colors,Bash,Function,Shell,Sed,Colors,G'day 我有这样的日志搜索功能: function searchLogs() { local logFile="$1" local filters="${@:2}" local sedScript='/^---/ !{H;$ !d};x'; # loop over filters and add each to sed script for filter in $filters do # append filter

G'day

我有这样的日志搜索功能:

function searchLogs() {
    local logFile="$1"
    local filters="${@:2}"
    local sedScript='/^---/ !{H;$ !d};x';

    # loop over filters and add each to sed script
    for filter in $filters
    do
       # append filter
       sedScript=$sedScript';/'$filter'/ !d';
    done;

    # search log file for log events that contain ALL filters
    sed -e "$sedScript" "$logFile";
}
$ searchLogs <file> <pattern> <pattern> | less -R
可以这样使用:

function searchLogs() {
    local logFile="$1"
    local filters="${@:2}"
    local sedScript='/^---/ !{H;$ !d};x';

    # loop over filters and add each to sed script
    for filter in $filters
    do
       # append filter
       sedScript=$sedScript';/'$filter'/ !d';
    done;

    # search log file for log events that contain ALL filters
    sed -e "$sedScript" "$logFile";
}
$ searchLogs <file> <pattern> <pattern> | less -R
$searchLogs | less-R
…并将生成这样的命令

sed -e '/^---/ !{H;$ !d};x;/<pattern>/ !d;/<pattern>/ !d' <file> | less -R
sed-e'/^-/!{H;$!d};x、 //!d、 //!d’less-R
…但是我想让它给火柴上色,另外

……然而,我一点运气都没有。有人知道如何用
sed
给每根火柴上色吗

p、 我不想使用
grep
,因为我正在使用
grep
作为包装函数,我将其导入到日志文件的部分中,以使其更易于阅读,例如(使用粗体显示
grep
命令已经着色的内容)

------------

id=12345

客户端=SomeService

时间=12:01


-----------

继续使用grep,并在本地设置grep\u颜色怎么样:

echo ab | GREP_COLORS='ms=1;33' grep --color=always a | GREP_COLORS='ms=1;32' grep --color=always b

如果仍然使用grep,并在本地为其设置grep_颜色,该怎么办

echo ab | GREP_COLORS='ms=1;33' grep --color=always a | GREP_COLORS='ms=1;32' grep --color=always b

如果输入=
12345
且模式为
1
4
,则sed是否匹配
[1234]5
[1]23[4]5
(使用括号突出显示匹配)?
sed有什么问题grep--color=始终…|grep…
?@jhnc正如我所说的,我正在将该函数的整个输出导入grep,以对日志的特定部分进行着色
searchLogs | grep--color=always-e“^[^=]*”-e“---”e“,“| less-R
,以便它们更易于阅读。我想用
sed
来做,这样我就可以用不同的颜色给火柴上色了。
sed…|格雷普颜色=。。。grep--color=始终…|格雷普颜色=。。。grep…
?另请参见输入=
12345
和模式是否为
1
4
,sed是否匹配
[1234]5
[1]23[4]5
(使用括号突出显示匹配)?
sed有什么问题grep--color=始终…|grep…
?@jhnc正如我所说的,我正在将该函数的整个输出导入grep,以对日志的特定部分进行着色
searchLogs | grep--color=always-e“^[^=]*”-e“---”e“,“| less-R
,以便它们更易于阅读。我想用
sed
来做,这样我就可以用不同的颜色给火柴上色了。
sed…|格雷普颜色=。。。grep--color=始终…|格雷普颜色=。。。grep…
?另请参见