取得元:http://www.topbug.net/blog/2016/08/18/truncate-long-matching-lines-of-grep-a-solution-that-preserves-color/
提案されたアプローチ".{0,10}<original pattern>.{0,10}"
は、ハイライトの色がめちゃくちゃになることが多いことを除いて、完全に優れています。同様の出力でスクリプトを作成しましたが、色も保持されます。
#!/bin/bash
context_length=10
control_length_before=$(($(echo a | grep --color=always a | cut -d a -f '1' | wc -c)-1))
control_length_after=$(($(echo a | grep --color=always a | cut -d a -f '2' | wc -c)-1))
grep -E --color=always "$1" $2 |
grep --color=none -oE \
".{0,$(($control_length_before + $context_length))}$1.{0,$(($control_length_after + $context_length))}"
スクリプトは次のように保存されていると仮定するとgrepl
、その後、grepl pattern file_with_long_lines
一致する行を表示しますが、一致する文字列の周りのみ10文字でなければなりません。
ack
?気に入らないときに使うコマンドですか?のようなものack file_with_long_lines | grep pattern
?:-)