使用彩色输出为awk,或grep多个模式搜索和条件

时间:2013-04-11 09:36:16

标签: bash awk grep

对于我的工作,我经常在文件中搜索模式。通常我使用grep --color=auto为搜索模式着色。现在,当我在搜索多个模式时,所有模式都应该出现在一行中,我使用的是grep pattern1 file|grep pattern2|grep pattern3awk '/pattern1/&&/pattern2'。但是这样,在grep中,我失去了对我非常有帮助的着色,或者在awk中,我不知道有什么方法只为模式字符串着色。当它变得太麻烦时,我使用grep pattern1 file|grep pattern2|grep pattern3|grep -E "pattern1|pattern2|pattern3"

那么在grep中是否有任何方式提及多个模式和条件? (我认为正则表达式应该支持它,但找不到任何,特别是模式的排序不固定)

或者有没有办法对awk搜索模式进行彩色打印?

欢迎任何简短的紧凑方法(因为我将每天使用很多次)

3 个答案:

答案 0 :(得分:7)

从grep滚动以保留颜色时,可以使用--color=always

grep pat1 --color=always | grep pat2

答案 1 :(得分:5)

您可以使用shell script/function和转义代码构建自己的awk

鉴于文件Awk color text,以下内容将在青色中打印匹配的单词Awk

$ awk '/Awk/{gsub(/Awk/,"\033[1;36m&\033[1;000m");print}' file
Awk color test

对于将This line ends here添加到第一行的多个模式,可以轻松扩展此原则。

$ awk '/Awk/&&/This/{gsub(/Awk|This/,"\033[1;36m&\033[1;000m");print}' file
Awk color test This line ends here.

查看here以获取有关外壳颜色的更多信息。

答案 2 :(得分:0)

您也可以使用花括号进行参数扩展:

grep --color=always -e{pat1,pat2}

实际上等同于:

grep --color=always -e foo -e bar

请注意,这将返回带有 pat1 AND/OR pat2 的结果。

(我没有足够的声望点来添加此帖子作为评论)

相关问题