如何在bash中按单词末尾字符对不同长度的单词列表排序
Bash 按单词最后一个字符排序的实现方法
你可以用rev+sort的组合实现需求,该方案对任意长度的单词都适用,逻辑简单直观:
rev 单词列表文件 | sort | rev
原理说明
- 第一步用
rev命令将每一行的单词整体反转,此时原单词的最后一个字符会变成反转后字符串的首字符 - 第二步用
sort默认按首字符升序排序,相当于按原单词的最后一个字符排序 - 第三步再用
rev把所有单词反转回原始形态,就得到预期排序结果
用你给出的示例验证:
原始单词列表内容:
apple birthday Osaka
执行上述命令后输出:
Osaka apple birthday
和你的预期结果完全一致。
如果你所在的环境没有rev命令,也可以用awk+sort组合实现相同效果:
awk '{print substr($0,length($0),1) "\t" $0}' 单词列表文件 | sort | cut -f2-
内容的提问来源于stack exchange,提问作者user15629312
相关产品推荐
相关产品推荐

