次のようなファイルがあるとしましょう。
$ cat test
test line 1
test line 2
line without the search word
another line without it
test line 3 with two test words
test line 4
デフォルトでは、grep
クエリを含むすべての行が返されます。
$ grep test test
test line 1
test line 2
test line 3 with two test words
test line 4
--color
引数を渡すと、grep
検索式と一致する行部分が強調表示されますが、その式を含む行のみが返されます。grep
ソースファイルのすべての行を出力しますが、強調表示が一致する方法はありますか?
これを達成するための私の現在のひどいハッキングは、(少なくとも一致するものがない10000を超える連続行がないファイルについて)次のようになります。
$ grep -B 9999 -A 9999 test test
これが不可能な場合は、grep
同じ機能を提供する他のコマンドラインツールはありますか?私はそれに触れました。ack
が、選択の余地がないようです。
ベストアンサー1
grep --color -E "test|$" yourfile
ここで私たちがすることは、$
パターンとテストパターンを一致させることです。当然、$
色を指定することはないので、テストパターンだけが色を取得します。-E
拡張正規表現一致を有効にするだけです。
次の関数を簡単に作成できます。
highlight () { grep --color -E "$1|$" "${@:1}" ; }