我需要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])
执行替换。要删除最后一个点中的所有内容,我们将其替换为空字符串。我们如何匹配最后一个点的所有内容?使用
/\.[^.]*$/
,这意味着:匹配点,然后匹配除点以外的任何类型的字符,直到字段结尾。