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