对于我的工作,我经常在文件中搜索模式。通常我使用grep --color=auto
为搜索模式着色。现在,当我在搜索多个模式时,所有模式都应该出现在一行中,我使用的是grep pattern1 file|grep pattern2|grep pattern3
或awk '/pattern1/&&/pattern2'
。但是这样,在grep中,我失去了对我非常有帮助的着色,或者在awk中,我不知道有什么方法只为模式字符串着色。当它变得太麻烦时,我使用grep pattern1 file|grep pattern2|grep pattern3|grep -E "pattern1|pattern2|pattern3"
。
那么在grep中是否有任何方式提及多个模式和条件? (我认为正则表达式应该支持它,但找不到任何,特别是模式的排序不固定)
或者有没有办法对awk搜索模式进行彩色打印?
欢迎任何简短的紧凑方法(因为我将每天使用很多次)
答案 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
的结果。
(我没有足够的声望点来添加此帖子作为评论)