【发布时间】:2018-01-28 05:00:33
【问题描述】:
我知道如何按字母顺序对文本文件进行排序,但我想做的不仅仅是排序(即分组)。
我正在尝试创建一个 Unix Shell 脚本,该脚本将我的组织中的 /etc/hosts 文件格式化为以下格式:
From:
Xsb ip
aabc ip
A2bc ip
Eexg ip
exx ip
Fxg ip
To:
### A
aabc ip
a2bc ip
### E
eexg ip
exx ip
### F
fxg ip
### X
xsb ip
然后我将创建另一个脚本来添加新的主机名行,但现在我不确定最紧凑的方法是什么。我想也许我需要使用 for 循环来循环主机名的所有首字母,但您的专家建议以最短的方式受到高度赞赏。
【问题讨论】:
-
虽然 WangJie 的回答符合您的要求,但如果您发现您的 /etc/hosts 如此复杂,您可能会考虑使用 bind .. :}
-
您的问题是
/etc/hosts的输入格式为<ip-address> <hostname.domain.org> <hostname>,其中最后的hostname(或简称)可以是任意数量的别名。您的/etc/host是否包含多个 IP 的别名?如果是这样,您想要每个列表吗?/etc/hosts中的cmets将如何处理?你都尝试了些什么?哪里失败了? -
感谢大卫的评论。我还没有开始创建脚本,我还在头脑风暴中。我在一个非常庞大的环境中工作,其中数十个 /etc/hosts 中有数百个主机名,并且有多个编辑文件的用户,所以我想通过一个可以统一 /etc/hosts 编辑的 shell 脚本创建一个进程。 cmets 将位于每次脚本运行时附加的 /etc/hosts 的最顶部或最底部。我计划为此目的使用小容器(即 header.in、cmets.in、main.in),每个容器都被附加并重定向到最终的 /etc/hosts 输出中。
标签: linux shell file sorting grouping