grep 彩色输入后面的文本

grep 彩色输入后面的文本

我有一个生成彩色输出的命令。我希望 grep纯文本该命令的括号(同时仍然保留颜色)。如果 I grep -F '[',由于颜色代码,每行都匹配。

如何 grep 查找括号(或其他纯文本功能)而不丢失颜色?

注意:有类似的关于 grep 颜色代码或保留颜色的帖子,这些帖子都没有帮助。

答案1

你可以这样做:

$ printf "1st line \033[31m RED literal [ \033[0m NORMAL \n2nd line \033[31m RED \033[0m NORMAL \n" | while IFS=; read -r line
do
    if echo "$line" | ansifilter | grep -F '[' >/dev/null
    then
        echo "$line"
    fi
done
1st line  RED literal [  NORMAL

你必须有 抗过滤器 安装。

请注意,这不是很有效,因为 grep 会在每一行上调用,但对于小输入应该可以正常工作。

相关内容