Sujet : Re: bash aesthetics question: special characters in reg exp in [[ ... =~~ ... ]]
De : gazelle (at) *nospam* shell.xmission.com (Kenny McCormack)
Groupes : comp.unix.shellDate : 23. Jul 2024, 06:33:31
Autres entêtes
Organisation : The official candy of the new Millennium
Message-ID : <v7nfbb$3q3of$1@news.xmission.com>
References : 1 2
User-Agent : trn 4.0-test77 (Sep 1, 2010)
In article <
v7n9s1$2p39$1@nnrp.usenet.blueworldhosting.com>,
Arti F. Idiot <
addr@is.invalid> wrote:
...
Not sure this really addresses your 'type funcName' query but maybe
somewhat better output from 'type funcName' ? :
>
...
regex=$(printf 'foo[^$\n]*bar')
[[ "$f" =~ $regex ]] && echo "foo bar"
Yes. I think there are actually some other situations like this (i.e.,
issues involving using =~) - where putting the reg exp into a variable and
then using the variable works better. It seems to be a common solution.
Kind of wish the regex string could be bracketed by "/" as in awk.
Yes. I've often wished the same. It is annoying that you have to escape
any spaces in the regexp (since it isn't delimited, like reg exps are in
most other languages [not just AWK]).
Incidentally, here's another situation - involving using $'' but not
involving =~. In another script, I have:
ctrla=$'\001'
Then I use $ctrla thereafter. But when the function is listed, the above
line comes out as:
ctrla=$''
Unless I pipe it into "less", in which case it displays as:
ctrla=$'^A'
(with the ^A in reverse video). The point being that, as before with \n,
there is a hard 001 character in there, not a graphic representation of it
(as there should, IMHO, be).
Agreeing with what Kaz wrote, I'm not objecting to there being hard
characters in the internal representation of the code, but rather, I am
saying that when it is displayed (e.g., by the "type" command), it should be
rendered in a visible way.
And, yet, changing gears once again, I don't quite understand why you can't
write [\n] with =~. You have to write [$'\n']. It's not like that in most
other languages (e.g., AWK).
Which all kind of echoes back to the other recent thread in this NG about
regular expressions vs. globs. The cold hard fact is that there really is
no such thing as "regular expressions" (*), since every language, every
program, every implementation of them, is quite different.
(*) As an abstract concept, separate from any specific implementation.
-- Trump - the President for the rest of us.https://www.youtube.com/watch?v=JSkUJKgdcoE