如何交换fqdn< - > hosts文件中的hostname

时间:2016-08-25 20:55:46

标签: sed

我正在尝试更新/etc/hosts文件中的格式。 样品

# more /etc/hosts

14.5.10.13 host1 host1.mydomain.com
14.5.10.14 host2 host2.mydomain.com
#

14.5.10.13 host1.mydomain.com host1
14.5.10.14 host2.mydomain.com host2

我尝试了这个,但没有奏效。请建议。

#sed 's/host{1,2} /host{1,2}.mydomain.com/' /etc/hosts

1 个答案:

答案 0 :(得分:1)

要交换文件主机中的第二个和第三个字段,但仅当第二个字段为host1host2时才会交换:

$ awk '$2~/^host[12]$/{a=$2; $2=$3; $3=a} 1' hosts
# more /etc/hosts

14.5.10.13 host1.mydomain.com host1
14.5.10.14 host2.mydomain.com host2
#

此处,$2~/^host[12]$/仅选择第二个字段与其中一个感兴趣的主机匹配的行。对于这些行,交换第二个和第三个字段。最终的1是awk用于打印线的神秘简写。

用sed做类似的事情:

$ sed -E '/ host[12] /{s/ (host[12]) ([[:alnum:].]*)/ \2 \1/}' hosts
# more /etc/hosts

14.5.10.13 host1.mydomain.com host1
14.5.10.14 host2.mydomain.com host2
#

此处,/ host[12] /仅选择包含空格的host1host2的行。对于这些行,host1host2与后面的单词交换。