我知道如何按字母顺序对文本文件进行排序,但我尝试的不仅仅是排序(即分组)。
我正在尝试创建一个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循环遍历主机名的所有首字母,但是你的专家建议在最短的路上受到高度赞赏。
答案 0 :(得分:1)
以下脚本可能会满足您的需求。
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
当第一行字母与下一行不同时添加'###'希望这可以帮到你。