Mar*_*ter 2 grep shell-script text-processing
我有一个简单的bash脚本。我的脚本的一行与 grep 匹配“模式”并为匹配颜色
grep -i --color=always -- "$1"
Run Code Online (Sandbox Code Playgroud)
我需要修改它,以便它只为匹配着色,如果该行不是注释(即,如果它不以 开头#)。换句话说:我仍然希望 grep 匹配注释行,但不对其进行着色。
假设我有以下文本文件(添加了行号)
1 aaa PATTERN
2 bbb ccc PATTERN ddd
3 # eee PATTERN
4 fff ggg
Run Code Online (Sandbox Code Playgroud)
我需要 grep 表达式来匹配第 1、2、3 行,但只为未注释的行(1 和 2)着色
GNU grep与-P选项一起使用:
$ grep PATTERN file | grep -P '^[^#]*\KPATTERN|^'
aaa PATTERN
bbb ccc PATTERN ddd
# eee PATTERN
Run Code Online (Sandbox Code Playgroud)
\K导致左侧的所有内容PATTERN都不包含在匹配的字符串中。此解决方案假设您的grep别名为grep --color=auto