How do I fetch only numbers in grep?
You can use grep -E
to access the extended regular expression syntax( Same as egrep)
I have created a testfile with below contents:
>cat testfile
this is some text
with some random lines
again some text
ok now going for numbers (:32)
ok now going for numbers (:12)
ok now going for numbers (:132)
ok now going for numbers (:1324)
Now to grep the numbers alone from the text you can use
>grep -Eo '[0-9]{1,4}' testfile
32
12
132
1324
will be output.
Here "-o" is used to only output the matching segment of the line, rather than the full contents of the line.
The squiggly brackets (e.g. { and }) indicate the number of instances of the match. {1,4} requires that the previous character or character class must occur at least once, but no more than four times.
Hope this helps
You can use RE bracket expression [:digit:]
specified by section 9.3.5 of POSIX standard , in combination with -o
flag to print only matching "words"
$ grep -o '[[:digit:]]*' <<< $'No number in this line\nbut 123 here'
123
grep -o
will print only the matching part of the line. Otherwise grep will print any lines with the pattern.