我有一个函数设置,可以使用 ANSI 转义序列和 sed 为 tail 命令提供颜色。
function colortail {
tail -f -n30 $1 | sed -e 's/\(.*MINOR.*\)/\o033[93m\1\o033[39m/' -e 's/.*MAJOR.*/\o033[38;5;202m&\o033[m/'
}
如何进行设置,以便与我的预定义字符串不匹配的任何其他行都采用另一种颜色?就像“默认颜色”一样?有没有办法使用通配符?如果我想要明亮/大胆的白色,添加这样的东西会起作用吗?
-e 's/\(.*"".*\)033[1;37m\033[m"
答案1
我不太擅长 shell 转义序列,但在我看来你是。因此,我认为您的用例缺少的是实现 if/else 类型的逻辑。您可以采用以下一种方法:
sed -e '\
/.*MINOR.*/{ # If .*MINOR.* is matched \
# Code to set MINOR color \
} \
/.*MINOR.*/!{ # If .*MINOR.* is not matched \
/.*MAJOR.*/ { # If .*MAJOR.* is matched \
# Code to set MAJOR color \
} \
/.*MAJOR.*/!{ # If .*MAJOR.* is not matched \
# Code to set the default color \
} \
}'
参考