grep
位置16から始まる場合は、パターンを一致させる必要があります。文字列' pattern'
(スペースで始まる)を一致させたいとしましょう。
以下が一致する必要があります。
bla bla bla bla pattern
そして、検索パターンがposで始まらないので、以下は一致してはいけません。 16:
bla bla bla bla foo foo pattern
この正規表現を使ってみました。
egrep '.*\{15\} pattern'
しかし、これは期待どおりに機能しないようです。
誰でも解決策を提案できますか?
ベストアンサー1
私の考えであなたが探しているものは次のとおりです。
grep -E '^.{15} pattern'
これはほとんどのユースケースに適しています。ただし、その部分だけが「一致」するのではなく、以前pattern
のすべての項目も一致に含まれます。直接提供されている場合、またはシェルエイリアスに含まれている場合は、grep
強調表示して確認できます。--color
色がない場合は、grep -o
印刷する一致する部分にのみ影響します。たとえば、
$ echo 'bla bla bla bla pattern' | grep -Eo '^.{15}( pattern)'
bla bla bla bla pattern
GNU grepでこの動作を回避するには、LookbehindでPerl式を使用できます。たとえば、
$ echo 'bla bla bla bla pattern' | grep -Po '(?<=^.{15}) pattern'
pattern
これはそのpattern
部分にのみ「一致」します。