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


14

試合後の情報が多すぎるという問題があります

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

試合の前後に20文字または10語だけを取得したい。

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


1
あまりにも多くの情報について不平を言うとき、オプションのセットは少し奇妙です。あなたは、1行をしたい前に、あなたのマッチが表示された(-A1-B1RESP。)が、それはあまりにも多くのですか?どこで正確に出力をトリミングしますか?
アンドレアスヴィーゼ14年

1
期待する入力例と出力例を教えてください。
ラメシュ14年

コマンドを変更し、Ubuntu 13.10でテストし、機能するかどうかを教えてください。私はgrepのオプションとegrepのオプション持って
エリック・

回答:


23
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

あなたが持っているなんていテストファイル;)
Ouki 14年

ファイルの残りの部分は実際に非常に便利です。これは、Schemeの途中にある複数行のコメントの一部であり、パーサーを壊さずに除外する必要がありました。
エリック14年

私のファイルの1つは755に設定されていますが、catがHTMLファイルに理想的ではないことがわかります。ファイル名をパラメーターとしてgrepに渡してみてください。編集を参照してください。
エリック14年

777ファイルとは、異なるファイルのコピーが777個あることを意味します。$$$ egrep -o '。{0,20} pseudomonas。{0,20}' * $$$を実行します。コマンドはそこに無限に留まり、何もしません。これは、再び$$$ egrep -ori '。{0,20} pseudomonas。{0,20}' * $$$で動作するようです。再帰と大文字小文字を区別する場合も同じです。ただし、非常に遅いです。そんなに遅くないはずだと思います。Grepはかなり高速でした。
レオレオポルトヘルツ준영14年

cattingは仕事をしない場合、あなたは常にだけ追加して、ファイルにそれを置くことができ> results.txt、あなたのコマンドの最後に、それはあなたがそれを見つけたファイルを教えてくれません。
エリック・

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

一致し、それらのコンテキストが重複せず、ファイル名にpseudomonas

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.