我需要IP地址的前3个八位字节和myhosts名称,而我想通过cut命令进行创建但无法加入主机名

$ getent hosts myhosts
172.10.2.32    myhosts.lab.com


任何带有awk,sed,cut,python的东西都可以

$ getent hosts myhosts | cut -d "." -f1,2,3
172.10.2


输出应为:

172.10.2  myhosts.lab.com

最佳答案

在第一个字段上,删除最后一个点中的所有内容:

$ awk '{sub(/\.[^.]*$/,"",$1); print $1, $2}' <<< "172.10.2.32    myhosts.lab.com"
172.10.2 myhosts.lab.com


我们有两个字段:IP和主机名。主机名将被返回而没有任何更改,而对于IP,我们要删除最后一个块。

要调整第一个字段$1,我们使用sub()。这将使用语法sub(regexp, replacement [, target])执行替换。要删除最后一个点中的所有内容,我们将其替换为空字符串。

我们如何匹配最后一个点的所有内容?使用/\.[^.]*$/,这意味着:匹配点,然后匹配除点以外的任何类型的字符,直到字段结尾。

08-26 16:12