Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Grep --byte-offset not returning the offset (Grep version 2.5.1)

Tags:

grep

bash

offset

Grep --byte-offset not returning the offset (Grep version 2.5.1) Hi, I am trying to get the position of a repeated string in a line using

Code:

grep -b -o "pattern"

In my server I am using GNU grep version 2.14 and the code is working fine. However when I am deploying the same code in a different server which is using GNU grep version 2.5.1 the code is not working properly. Even though the byte offset option is available there. Any idea how to solve it.

Example:

Code:

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

Expected output (and supported in grep 2.14):

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

But same code with grep version 2.5.1 is giving the following output:

0:cat
cat
cat
cat

Please suggest..

like image 372
user2754933 Avatar asked Sep 14 '13 14:09

user2754933


1 Answers

It was a bug in grep as some notes in its Changelog refer to it:

    * 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.

Use later versions (at least 2.5.3) where it seems fixed already.

like image 168
konsolebox Avatar answered Nov 15 '22 10:11

konsolebox