Recently I had need of cutting up domain names such as domain.com, this is easy enough for as simple a domain as this. However, the problem arises when you need to cut up something more like “education.k12.ia.us”. In order to get the extension alone in either case you can do the following:
echo domain.com | awk -F. {'print $2'} com
Now normally if you have a domain as simple as example.com with only one period then you can can just do the opposite of this and print $1:
echo domain.com | awk -F. {'print $1'} domain
The problem with more complex URLs is that awk’s field delimiter is now looking at multiple periods to look at, could be just one or it could be two, three, four or more.
To get the final extension in this case then we’ll use the following:
echo education.k12.ia.us | awk -F. {'print $NF'} us
Then for the rest of it we’ll have to reverse it, then cut off the first field then reverse it again:
echo education.k12.ia.us | rev | cut -d. -f2- | rev education.k12.ia