web-dev-qa-db-ja.com

マッチの前後20文字をgrepするには

試合後に情報が入りすぎて困る

grep -RnisI --color=auto "pseudomonas" *

試合前後は20文字、10語程度でやりたいです。

そのようなことを行うための適切なツールは何ですか?

cat file.txt | grep -o -P '.{0,20}string.{0,20}'

これはあなたのためにそれをするべきです

更新:

Catしたくない場合は、ファイルをパラメーターとしてgrepを使用するだけです。

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

また、-PはPerl正規表現を使用しています。これは、manページで実験的であると述べています。そのフラグを回避したい場合は、代わりにegrepを使用できます。

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt
24
Eric
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

一致とそのコンテキストが重複せず、ファイル名にpseudomonasが含まれていないと仮定します。

また、報告された行番号はコンテキストの最初の行番号であることに注意してください。

4