Date: Wed, 11 Feb 2009 13:22:20 +0200 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: Ian Smith <smithi@nimnet.asn.au> Cc: questions@freebsd.org Subject: Re: sh parameter substitution problem Message-ID: <87ljsdusk3.fsf@kobe.laptop> In-Reply-To: <20090211213011.C38905@sola.nimnet.asn.au> (Ian Smith's message of "Wed, 11 Feb 2009 21:47:17 %2B1100 (EST)") References: <20090211213011.C38905@sola.nimnet.asn.au>
index | next in thread | previous in thread | raw e-mail
On Wed, 11 Feb 2009 21:47:17 +1100 (EST), Ian Smith <smithi@nimnet.asn.au> wrote:
> I'm getting nowhere trying to parse out IP addresses from strings of
> this form in /bin/sh, which have been awk'd out of 'tail named.run':
>
> addr='195.68.176.4#1440:'
> addr='195.68.176.4#16811:'
> addr='195.68.176.4#276:'
>
> sh(1) in hand, I've tried:
>
> ip=${addr:%#*}
> ip=${addr:%%#*}
> ip=${addr:%[#]*}
> ip=${addr:%%[#]*}
>
> but all of these report './testbit: 7: Syntax error: Bad substitution'
>
> How can I split these strings to exclude the '#' and all beyond,
> preferably using sh syntax, at least without resorting to perl?
Remove the ':' part and quote the text to avoid parsing '#' as a comment
delimiter:
$ addr='195.68.176.4#1440:'
$ echo "${addr%#*}"
195.68.176.4
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87ljsdusk3.fsf>
