我有一个/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文件:
  • namenodesecondarynamenode转到名为masters的文件
  • slaves*转到名为slaves的文件
  • 至少会有namenode,并且有0个或更多奴隶。

  • 解析bash中提到的文件,并将这些部分分别写入提到的相应部分(mastersslaves),最简单的方法是什么?我可以在Python中轻松完成此操作,但我需要在bash中完成。masters看起来像:
        <ipaddress1>   namenode
        <ipaddress2> secondarynamenode
    

    slaves像这样:
        <ipaddress3>   slave1
        <ipaddress4>  slave2
    

    最佳答案

    使用awk,您可以执行以下操作:

    awk '/namenode/{print >"masters"; next} /slave[0-9]/{print > "slaves"}' /etc/hosts
    

    关于bash - 如何正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23355006/

    10-10 17:29