Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does this `grep -o` fail, and how should I work around it?

Tags:

regex

grep

bash

Given the input

echo abc123def | grep -o '[0-9]*'

On one computer (with GNU grep 2.5.4), this returns 123, and on another (with GNU grep 2.5.1) it returns the empty string. Is there some explanation for why grep 2.5.1 fails here, or is it just a bug? I'm using grep -o in this way in a bash script that I'd like to be able to run on different computers (which may have different versions of grep). Is there a "right way" to get consistent behavior?

like image 889
Anton Geraschenko Avatar asked Feb 04 '23 08:02

Anton Geraschenko


1 Answers

Yes, 2.5.1's -o handling was buggy: http://www.mail-archive.com/[email protected]/msg00993.html

Grep is probably not the right tool for this; sed or tr or even perl might be better depending on what the actual task is.

like image 66
Grandpa Avatar answered Feb 06 '23 09:02

Grandpa