getent 主机取前 3 位向上数字+主机名 unix

getent hosts to take initial 3 up digit+hostname unix

我需要前 3 个八位字节的 IP 地址和 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(/\.[^.]*$/,"",); print , }' <<< "172.10.2.32    myhosts.lab.com"
172.10.2 myhosts.lab.com

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

要调整第一个字段 </code>,我们使用 <a href="https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html" rel="nofollow"><code>sub()。这使用语法 sub(regexp, replacement [, target]) 执行替换。要删除最后一个点的所有内容,我们将其替换为空字符串。

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

$ sed -E 's/\.[0-9]+ +/ /' <<< '172.10.2.32    myhosts.lab.com'
172.10.2 myhosts.lab.com

或者如果命令输出中的白色 space 可以包含制表符或其他不可见字符:

$ sed -E 's/\.[0-9]+[[:blank:]]+/ /' <<< '172.10.2.32    myhosts.lab.com'
172.10.2 myhosts.lab.com