我執行以下命令awk
:將值傳遞給參數 - AWK
egrep '^[0-9]' /etc/hosts | grep -v 127.0.0.1 \
| awk 'NR==1{ips=$1}
NR>1{ips=ips ", " $1}
$2=="namenode"{nn=$1}
END{ printf "/opt/mapr/server/configure.sh -C %s -Z %s -N mycluster --create-user -D /dev/xvdb", ips, nn}'
,並返回正確的輸出:
/opt/mapr/server/configure.sh -C 10.224.43.50, 10.40.235.23 -Z 10.40.235.23 -N mycluster --create-user -D /dev/xvdb
現在我變得更聰明,並試圖遵循的模式:
egrep '^[0-9]' /etc/hosts | grep -v 127.0.0.1 \
| awk 'NR==1{ips=$1}
NR>1{ips=ips ", " $1}
$2=="namenode"{nn=$1}
END{ printf "/opt/mapr/server/configure.sh -C %s -Z %s -RM %s -HS %s -N mycluster --create-user -D /dev/xvdb", ips, nn, nn, nn}'
就是這樣,我添加了兩個具有相同值的條目但我沒有得到任何回報。這是爲什麼?
這裏是/etc/hosts
樣本:
[email protected]:~# cat /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
10.224.43.50 dgnode dgnode.dg.local
10.40.235.23 namenode namenode.dg.local
## vagrant-hostmanager-end
沒有未能從修改後的腳本獲得輸出的明顯原因;你應該得到一些東西,即使它不是你想要的東西。你確定你在正確的文件上運行它嗎? 'printf()'末尾都沒有換行符;這是你的問題的一個因素?根據您提供的hosts文件運行腳本(不使用我的'/ etc/hosts')會得到合理的結果。 – 2015-04-06 03:24:21