On 23/01/19 07:37, Alexander Kapshuk wrote:
> On Wed, Jan 23, 2019 at 9:05 AM Paul Colquhoun
> <paul...@andor.dropbear.id.au> wrote:
>>
>> On Wednesday, 23 January 2019 5:52:57 PM AEDT Alexander Kapshuk wrote:
>>> On Wed, Jan 23, 2019 at 5:20 AM Adam Carter <adamcart...@gmail.com> wrote:
>>>>>> François-Xavier
>>>>>
>>>>> My bad, it should be:
>>>>>
>>>>> sed 's/0*\([0-9][0-9]*\)/\1/g'
>>>>>
>>>>> (tests are indeed needed!)
>>>>
>>>> Many thanks François. This is almost right, but it is also stripping zeros
>>>> that follow a letter, and I only want it to strip zeros that are
>>>> proceeded by a period. There are no leading zeros in the first octet of
>>>> the IP so that case does not need to be handled.
>>>>
>>>> Does the \1 refer to what's in the ()'s? So anything that one would wont
>>>> to carry through should be inside the ()'s and anything that's outside is
>>>> stripped, right?
>>> Would something like to do the trick?
>>> echo 198.088.062.01 | sed 's/\.0/./g'
>>> 198.88.62.1
>>
>> In a word, no.
>>
>> echo 198.088.0.01 | sed 's/\.0/./g'
>> 198.88..1
>>
>>
>> --
>> Reverend Paul Colquhoun, ULC.     http://andor.dropbear.id.au/
>>   Asking for technical help in newsgroups?  Read this first:
>>      http://catb.org/~esr/faqs/smart-questions.html#intro
>>
>>
>>
>>
> 
> How about this one?
> 
> echo '198.088.0.01
> 198.088.062.01' | sed 's/\.0\([0-9][0-9]*\)/.\1/g'
> 198.88.0.1
> 198.88.62.1
> 

I've just done a bit of digging, and would this work to match an octet?

[0-9][0-9]?[0-9]?

I know ? normally matches a single character, but apparently in this
syntax it means "0 or 1 occurrence of the preceding expression". So that
will detect a number consisting of at most three digits.

I thought there must be a "detect a single optional character" operator
... :-)

Cheers,
Wol

Reply via email to