gpt4 book ai didi

linux - 按字母顺序分组对文本文件进行排序 (Linux)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:25 26 4
gpt4 key购买 nike

我知道如何按字母顺序对文本文件进行排序,但我想做的不仅仅是排序(即分组)。

我正在尝试创建一个 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 循环遍历主机名的所有首字母,但非常感谢您的专家建议以最短的方式。

最佳答案

以下脚本也许可以满足您的需求。

tr A-Z a-z | sort | awk '{\
if (last != substr($0, 0, 1)) {\
print "### "toupper(substr($0,0,1))"\n"$0; last = substr($1, 0, 1)\
} else {\
print $0\
}\
}'
  • tr 将字母转换为小写
  • sort 按字母顺序对文本排序
  • awk 当行首字母与下一行不同时添加'###'

希望对您有所帮助。

关于linux - 按字母顺序分组对文本文件进行排序 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com