我想使用 tr
命令模拟 rev
命令(按字母表)
所以我这么做了
echo abcdefghijklmnopqrstuvxyz | tr '[z-a]' '[a-z]'
这给了我
tr: range-endpoints of `z-a' are in reverse collating sequence order
所以我尝试了
echo abcdefghijklmnopqrstuvxyz | tr 'abcdefghijklmnopqrstuvxyz' 'zyxvutsrqponmlkjihgfedcba'
它工作正常,输出为zyxvutsrqponmlkjihgfedcba
tr '[z-a]' '[a-z]' 错了
?
如果我指定 tr '[a-c]' '[c-a]'
它也可以正常工作。
如有任何帮助,我们将不胜感激
谢谢
最佳答案
我认为你对“[c-a]”很幸运,我的 tr 说 tr:[c-a]:无效的目标字符串
,这正是我所期望的。
在我处理过的所有语言中,字符范围(即 [a-z])的值需要上升。 很高兴您已经找到了解决方案。
或者编写一个可以使用的函数,例如 tr "[a-z]""[$( revCharRange a-z )]"
(由于创建反向字符范围需要子 shell,这会更昂贵。
编辑
其中 revCharRange a-z
将输出 zyxw...cba
我希望这会有所帮助。
关于bash - tr '[z-a]' '[a-z]' 产生错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424380/