bash - tr '[z-a]' '[a-z]' 产生错误消息

标签 bash tr

我想使用 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/

相关文章:

java - 如果有任何文件名带有空格,如何正确地将 git ls-files 输出传递到 Java?

unix - 删除 Unix 文件中的 ^@ 字符

regex - [[ :upper:]] and [:upper:] (bash)? 之间有什么区别

linux - 解析 bash 脚本中的文本

linux - 我可以使用 Google 翻译让我的 Raspberry Pi 按需说不同的语言吗?

image - 将 .pdf 文件更改为 .png Mac OS 10.3 的 shell 脚本

awk - 使用 sed(或 awk 或 tr)将换行符\n 替换为表达式

linux - 获取文件夹名并重命名文件名 tr Linux bash

bash - 如何使用 Find-exec 和 Tr 处理大量文件

bash - 按列格式化输出