It all started with a simple list of name='value'
and name=`value`
entries, all within the same line. My wish was to color a few matching entries for the devious purpose of making them more visible. First stab at solution was extremely easy:
something | grep --color=always -P "somename='.*?'"
Two things to note here: I had to use PERL-style grep as I needed a non-greedy matching and secondly this didn't fulfill its task. Yep, it didn't match backtick (`) character.
Simple regex adjustment one might think:
something | grep --color=always -P "somename=['`].*?['`]"
But no - backtick is a tricky one as it serves a special purpose in bash.
I tried a bunch of escaping methods before I remembered that hexadecimal characters are still a thing. Wouldn't you know it - that worked. To match a backtick, instead of using character itself, one can always use its hexadecimal escape code:
something | grep --color=always -P "somename=['\x60].*?['\x60]"
What about the obvious \` ?
Try it. :)
Hint, it won’t work with Perl grep.