I have a lot of bash
scripts that use perl
expressions within grep
in order to extract a substring between two delimiters. Example:
echo BeginMiddleEnd | grep -oP '(?<=Begin).*(?=End)'
The problem is, when I ported these scripts to a platform running busybox
, 'integrated' grep
does not recognize -P switch. Is there a clean way to do this using grep
and regular expressions
?
Edit:
There is no perl
, sed
or awk
on that platform. It's a lightweight linux
.
Use
bash
built-in parameter substitution:Loads more examples here.
You can use
awk
with custom field separator like this to get same output:Assuming there's no more than one occurrence per line, you can use
With grep and non-greedy quantifier you could also print more than one per line.