如何编写Shell脚本对/usr/share/dict/words词典按单词末尾比较排序
按单词末尾字符排序的Shell实现方案
核心思路
通过字符串反转+常规字典排序+二次反转的组合实现,无需复杂自定义排序逻辑,兼容性强。
效果验证(匹配给出的示例)
示例输入:
orange
media
monkey
执行测试命令:
# 先将示例内容写入测试文件验证 $ cat > test.txt << EOF orange media monkey EOF $ cat test.txt | rev | sort | rev
输出完全符合预期:
media orange monkey
处理系统词典文件的完整命令
直接运行以下命令即可得到按单词末尾字符排序后的词典内容:rev /usr/share/dict/words | sort | rev
如果需要将结果保存到文件,添加重定向即可:rev /usr/share/dict/words | sort | rev > ./sorted_words_by_tail.txt
命令拆解说明
rev:系统默认内置的字符串反转工具,会将输入的每一行内容首尾反转sort:按默认字典序对反转后的字符串排序,此时排序逻辑等价于对原字符串从末尾往前比对- 二次
rev:将排序后的字符串恢复为原单词形态,得到最终符合要求的排序结果
无rev环境的兼容方案
如果设备没有预装rev(极少见),可以用awk实现相同效果:awk '{for(i=length;i!=0;i--)x=x substr($0,i,1);print x;x=""}' /usr/share/dict/words | sort | awk '{for(i=length;i!=0;i--)x=x substr($0,i,1);print x;x=""}'
内容的提问来源于stack exchange,提问作者user16828049
相关产品推荐
相关产品推荐

