以下命令
grep -w '^[^#]* machine_VIP' /etc/hosts | head -1 | awk '{print $1}'
在 Linux 上运行良好(它捕获 machine_VIP 别名并从 /etc/hosts 返回 IP 地址并忽略备注行)
例子
cat /etc/hosts
5.5.5.5 GH_T T1 T2 T3#机器_VIP # 198.2.3.12 MON1 MON2 机器_VIP 18.2.4.12 W1#机器_VIP#机器_VIP#机器_VIP 192.9.200.77 机器_linux1 机器_linux2 机器_VIP 192.9.200.78 machine_linux10 machine_linux20 machine_VIP_test
grep -w '^[^#]* machine_VIP' /etc/hosts | head -1 | awk '{print $1}'
192.9.200.77
但是在 Solaris 上我有相同的主机,当我运行命令时我没有得到任何输出。
那么如何使该命令适合Solaris呢?
答案1
在 Solaris grep 中,-w 选项表示整个模式必须仅匹配一word,这与 GNU grep 的 -w 含义不同,匹配必须形成整个单词。
如果在模式末尾添加 $,那么它将与上面的示例文件一起使用,并且您不需要 -w 开关:
grep '^[^#]* machine_VIP$' /etc/hosts | head -1 | awk '{print $1}'
...或者如果可行的话,您当然可以在您的 solaris 机器上安装 GNU grep。
答案2
在 Solaris 11 中,使用已安装的 GNU grep:/usr/gnu/bin/grep