<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.28.3">
</HEAD>
<BODY>
Yes, I remember the IFS=, and the OIFS=$IFS, and then IFS=, and then put it back, but was trying to not disturb the argument list by doing a set statement, and it just reads so terribly. <BR>
<BR>
Thanks. <BR>
<BR>
On Mon, 2014-09-15 at 08:18 -0400, Ed Cashin wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Yes, Mike's right that you asked for a bash way and he gave you one.
If, though, you decide you would rather maintain compatibility with
minimal POSIX shells that don't have full bash support, you can use
the old-school Bourne shell features, $IFS and "set". I think IFS
stands for "internal field separator."
Just set the field separator to your field separator. After calling
"set" with the string to peel apart, the numbered variables will
correspond to the peeled-apart fields.
In the transcript below I'm checking that it works in the Korn shell
after verifying it in bash beforehand.
bash$ PS1='ksh$ ' ksh
ksh$ name=First.Last
ksh$ IFS=.
ksh$ set $name
ksh$ echo $1
First
ksh$ echo $2
Last
ksh$ ^D
bash$
On Sun, Sep 14, 2014 at 9:38 PM, Michael H. Warfield <<A HREF="mailto:mhw@wittsend.com">mhw@wittsend.com</A>> wrote:
> On Sun, 2014-09-14 at 19:41 -0400, Neal Rhodes wrote:
>> If in a shell script, you have a variable loaded with a character value,
>> and there is a delimiter, and you want to peel it apart by that
>> delimiter, is there a built-in expression to do that?
>
>> Here's what I'm doing, and I'm thinking there should be a better way.
>
>> FULLNAME=$1 #eg:
>> CustomerEntry.CreditLimit
>> DOT=`expr index $FULLNAME .`
>> DOTM1=`expr $DOT - 1`
>> TABLE=${FULLNAME:0:$DOTM1}
>> FIELD=${FULLNAME:$DOT:40}
>
> Yes there is. You specifically said "bash" in the subject and in the
> talks we've had a ALE and AUUG over "belts and suspenders bash" the
> speaker mentioned using regex's in bash and accessing the underlying
> substring results. Look for BASH_REMATCH variables and the =~ operator
> in the bash documentation.
>
> --
> FOO=CustomerEntry.CreditLimit
>
> if [[ "${FOO}" =~ (.*)\.(.*) ]] ; then
> echo "${BASH_REMATCH[1]} : ${BASH_REMATCH[2]}"
> else
> echo nope
> fi
>
> CustomerEntry : CreditLimit
> --
>
> Is that what you're after?
>
>> Neal Rhodes
>> President, MNOP Ltd
>> Lilburn, GA
>> 770-972-5430
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: <<A HREF="http://mail.ale.org/pipermail/ale/attachments/20140914/3c89902c/attachment.html">http://mail.ale.org/pipermail/ale/attachments/20140914/3c89902c/attachment.html</A>>
>
> Regards,
> Mike
> --
> Michael H. Warfield (AI4NB) | (770) 978-7061 | <A HREF="mailto:mhw@WittsEnd.com">mhw@WittsEnd.com</A>
> /\/\|=mhw=|\/\/ | (678) 463-0932 | <A HREF="http://www.wittsend.com/mhw/">http://www.wittsend.com/mhw/</A>
> NIC whois: MHW9 | An optimist believes we live in the best of all
> PGP Key: 0x674627FF | possible worlds. A pessimist is sure of it!
>
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: signature.asc
> Type: application/pgp-signature
> Size: 465 bytes
> Desc: This is a digitally signed message part
> URL: <<A HREF="http://mail.ale.org/pipermail/ale/attachments/20140914/e2365bf0/attachment.sig">http://mail.ale.org/pipermail/ale/attachments/20140914/e2365bf0/attachment.sig</A>>
> _______________________________________________
> Ale mailing list
> <A HREF="mailto:Ale@ale.org">Ale@ale.org</A>
> <A HREF="http://mail.ale.org/mailman/listinfo/ale">http://mail.ale.org/mailman/listinfo/ale</A>
> See JOBS, ANNOUNCE and SCHOOLS lists at
> <A HREF="http://mail.ale.org/mailman/listinfo">http://mail.ale.org/mailman/listinfo</A>
</PRE>
</BLOCKQUOTE>
<BR>
</BODY>
</HTML>