I need first 3 octets of IP address and the myhosts name, while I am trying to make via cut command but unable to join the host name
$ getent hosts myhosts
172.10.2.32 myhosts.lab.com
anything with awk, sed, cut, python will be okay
$ getent hosts myhosts | cut -d "." -f1,2,3
172.10.2
The output should be:
172.10.2 myhosts.lab.com
On the first field, remove everything from the last dot:
$ awk '{sub(/\.[^.]*$/,"",$1); print $1, $2}' <<< "172.10.2.32 myhosts.lab.com"
172.10.2 myhosts.lab.com
We have two fields: IP and hostname. The hostname is to be returned without any change, whereas for the IP we want to remove the last block.
To tune the first field $1
we use sub()
. This perform replacements using the syntax sub(regexp, replacement [, target])
. To remove everything from the last dot, we replace it with the empty string.
And how do we match everything from the last dot? Using /\.[^.]*$/
, which means: match a dot and then any kind of characters but a dot until the end of the field.