6

Grep--byte-offsetがオフセットを返さない (Grep バージョン 2.5.1) こんにちは、行内で繰り返される文字列の位置を取得しようとしています

コード:

grep -b -o "pattern"

私のサーバーでは GNU grep バージョン 2.14 を使用しており、コードは正常に動作しています。ただし、GNU grep バージョン 2.5.1 を使用している別のサーバーに同じコードをデプロイすると、コードが正しく機能しません。そこではバイトオフセットオプションが利用可能ですが。それを解決する方法を考えてください。

例:

コード:

export string="abc cat mat rat cat bat cat fat rat tat tat cat"
echo $string|grep -b -o "cat"

予想される出力 (および grep 2.14 でサポートされています):

4:cat
16:cat
24:cat
44:cat

ただし、grep バージョン 2.5.1 の同じコードでは、次の出力が得られます。

0:cat
cat
cat
cat

提案してください..

4

1 に答える 1

5

変更ログのいくつかのメモが参照しているため、これは grep のバグでした。

    * src/grep.c (nlscan): Make this function more robust by removing
      the undocumented assumption that its "lim" argument points
      right after a line boundary.  This will be used later to fix
      --byte-offset's broken behavior.  Patch #3769.

すでに修正されていると思われる新しいバージョン (少なくとも 2.5.3) を使用してください。

于 2013-09-14T14:40:45.143 に答える