我正在尝试更新/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
答案 0 :(得分:1)
要交换文件主机中的第二个和第三个字段,但仅当第二个字段为host1
或host2
时才会交换:
$ 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] /
仅选择包含空格的host1
或host2
的行。对于这些行,host1
或host2
与后面的单词交换。