You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by Marc Perkel <ma...@perkel.com> on 2008/04/26 20:17:45 UTC
Help with SED [OT]
Trying to do something that should be simple. Using sed to remove the
first part of a hostname but not working. I want:
abc.def.com to become def.com
I tried a lot of variations of the following but it's either greedy or
does nothing.
sed -e 's/^.*?[.]//'
Thanks in advance.
Re: Help with SED [OT]
Posted by Henrik K <he...@hege.li>.
On Mon, Apr 28, 2008 at 01:48:11AM -0500, Bookworm wrote:
> Bill Randle wrote:
>> On Sat, 2008-04-26 at 11:17 -0700, Marc Perkel wrote:
>>
>>> Trying to do something that should be simple. Using sed to remove the
>>> first part of a hostname but not working. I want:
>>>
>>> abc.def.com to become def.com
>>>
>>> I tried a lot of variations of the following but it's either greedy
>>> or does nothing.
>>>
>>> sed -e 's/^.*?[.]//'
>>>
>>
>> Here are two options:
>>
>> 1) sed -e 's/^[^.]*\.//'
>> It has a limitation that only the first host part is removed. I.e.:
>> abc.def.com becomes def.com and xyz.abc.def.com becomes abc.def.com
>>
>> 2) sed -e 's/^.*\.\([^.]*\.[^.]*\)/\1/'
>> This effectively strips out everything prior to the last portion
>> before the last period. In essence, it reduces to the domain name.
>> xyz.abc.def.com becomes def.com.
>>
>>
>> -Bill
>>
> Hmm.. Might want to consider adding something to check to see if the
> part after the last period is only two characters long. I.E.
> www.domain.com.uk or great.spammer.com.ru
$_ = 'www.yahoo.co.uk';
use Mail::SpamAssassin::Util::RegistrarBoundaries;
($h,$d) = Mail::SpamAssassin::Util::RegistrarBoundaries::split_domain($_);
print "$d\n";
Re: Help with SED [OT]
Posted by Bookworm <qm...@bkwm.com>.
Bill Randle wrote:
> On Sat, 2008-04-26 at 11:17 -0700, Marc Perkel wrote:
>
>> Trying to do something that should be simple. Using sed to remove the
>> first part of a hostname but not working. I want:
>>
>> abc.def.com to become def.com
>>
>> I tried a lot of variations of the following but it's either greedy or
>> does nothing.
>>
>> sed -e 's/^.*?[.]//'
>>
>
> Here are two options:
>
> 1) sed -e 's/^[^.]*\.//'
> It has a limitation that only the first host part is removed. I.e.:
> abc.def.com becomes def.com and xyz.abc.def.com becomes abc.def.com
>
> 2) sed -e 's/^.*\.\([^.]*\.[^.]*\)/\1/'
> This effectively strips out everything prior to the last portion
> before the last period. In essence, it reduces to the domain name.
> xyz.abc.def.com becomes def.com.
>
>
> -Bill
>
Hmm.. Might want to consider adding something to check to see if the
part after the last period is only two characters long. I.E.
www.domain.com.uk or great.spammer.com.ru
Re: Help with SED [OT]
Posted by Bill Randle <bi...@neocat.org>.
On Sat, 2008-04-26 at 11:17 -0700, Marc Perkel wrote:
> Trying to do something that should be simple. Using sed to remove the
> first part of a hostname but not working. I want:
>
> abc.def.com to become def.com
>
> I tried a lot of variations of the following but it's either greedy or
> does nothing.
>
> sed -e 's/^.*?[.]//'
Here are two options:
1) sed -e 's/^[^.]*\.//'
It has a limitation that only the first host part is removed. I.e.:
abc.def.com becomes def.com and xyz.abc.def.com becomes abc.def.com
2) sed -e 's/^.*\.\([^.]*\.[^.]*\)/\1/'
This effectively strips out everything prior to the last portion
before the last period. In essence, it reduces to the domain name.
xyz.abc.def.com becomes def.com.
-Bill