>> I wrote too fast.  In fact you can get the column number with GNU grep >> without parsing the original line: >> >> grep -nb -oE '.{0,100}PATTERN.{0,100}' > > This outputs byte offset from the beginning of the file, doesn't it? > Yes. You get, for each match: the line number (from the beginning of the file), the byte offset (from the beginning of the file) of the first displayed character, and the context of the match. > > Which will require at least reading the file into memory to convert. > I don't understand what you mean by that, but it seems to me that in any case it's much more efficient than parsing the output of grep with Elisp. And you can easily get the byte offset of each beginning of line with "grep -nbo '^.'", so calculating the byte offset from the beginning of the line is easy.