[英]how to get only the ip-address from a hosts file? Bash
我有一個/ etc / hosts文件的以下示例:
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
## vagrant-hostmanager-start
<ipaddress1> namenode
<ipaddress2> secondarynamenode
<ipaddress3> slave1
<ipaddress4> slave2
< it can be more slave nodes here>
## vagrant-hostmanager-end
在嘗試配置hadoop集群時,需要在以下配置中拆分/ etc / hosts文件:
namenode和secondarynamenode轉到一個稱為masters slaves的文件*轉到一個稱為slaves的文件。至少將有一個namenode,以及0個或更多的slaves。 如bash所述解析該文件,並將各部分分別寫入相應部分(主從)的最簡單方法是什么? 我可以在Python中輕松完成此操作,但我需要在bash中完成。 大師看起來像:
<ipaddress1>
<ipaddress2>
奴隸就像:
<ipaddress3>
<ipaddress4>
就是這樣,兩個文件僅包含ip地址,而不包含計算機的名稱...原因是如果存在計算機的名稱,Hadoop將無法正常工作。 我如何使用awk
或bash
做到這一點? 我有以下命令:
awk '/namenode/{print >"masters"; next} /slave[0-9]/{print > "slaves"}' /etc/hosts
但這會使機器名稱保持打開狀態...
這是使用awk
一種方法:
awk '
$2~/namenode/ { print $1 > "masters" }
$2~/slave/ { print $1 > "slaves"}
' /etc/hosts
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.