grepの条件付き色の指定

grepの条件付き色の指定

簡単なスクリプトがありますbash。私のスクリプトの1行は「パターン」と一致する色を探します。

grep -i --color=always -- "$1"

行がコメントでない場合にのみ色が一致するように変更する必要があります(つまり、コメントで始まらない場合#)。つまり、私はまだgrepがコメント行と一致したいのですが、色を付けないようにしたいのです。

次のテキストファイルがあるとします(行番号が追加されました)。

1 aaa PATTERN
2 bbb ccc PATTERN ddd
3 # eee PATTERN
4 fff ggg

行1、2、3を一致させるには、grep式が必要ですがコメントアウトされていない行(1および2)にのみ色を付けます。

ベストアンサー1

GNU grepオプションで使用-P:

$ grep PATTERN file | grep -P '^[^#]*\KPATTERN|^'
aaa PATTERN
bbb ccc PATTERN ddd
# eee PATTERN

\KPATTERN一致する文字列から左側のすべての項目が除外されます。このソリューションでは、エイリアスgrepが次のようになると仮定します。grep --color=auto

おすすめ記事