web-dev-qa-db-ja.com

「猫」の出力で単語を強調表示する方法は?

次のようにして、「cat」の出力でWordが使用可能かどうかを確認できます。

cat filename | grep Word

これにより、出力がフィルタリングされ、「Word」を含む行のみが表示されます。さて、他の行を削​​除せずに、出力で「単語」のみを強調表示することは可能ですか?

11
Meysam

EOLを実際のクエリと一緒にgrepできます(grepのエイリアスが既にある場合は--color、多くのディストリビューションのデフォルトなので、次の例では省略できます):

grep --color=auto 'Word\|$' file

EOLは実際のキャラクターではないため、何も強調されませんが、すべての行に一致します。

パイプ文字をエスケープする必要がない場合は、拡張正規表現を使用できます。

grep -E --color=auto 'Word|$' file
17
Chris Down

GNU grepを利用できない場合は、次の方法で移植性を高めます。

grepc()
{
  pattern=$1
  shift
  esc=$(printf "\033")
  sed 's"'"$pattern"'"'$esc'[32m&'$esc'[0m"g' "$@"
}

これらのコードのいずれかを使用して色をカスタマイズできます

30m black
31m red
32m green
33m yellow
34m blue
35m Magenta
36m cyan
37m white

カラーコードの代わりに7mを使用すると、文字列が反転表示されます。

5
jlliagre