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
我需要前 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