2

我想用命令模拟命令rev(在字母表上)tr

所以我做了这个

echo abcdefghijklmnopqrstuvxyz | tr '[z-a]' '[a-z]'

这给了我

tr:“za”的范围端点是反向整理顺序

所以我尝试了

echo abcdefghijklmnopqrstuvxyz | tr 'abcdefghijklmnopqrstuvxyz' 'zyxvutsrqponmlkjihgfedcba'

它工作正常,输出是zyxvutsrqponmlkjihgfedcba

那是错的tr '[z-a]' '[a-z]'吗?

如果我指定tr '[a-c]' '[c-a]'它也可以正常工作。

任何帮助,将不胜感激

谢谢

4

1 回答 1

4

我认为你对“[ca]”这件事很幸运,我的 tr 说tr: [c-a]: invalid destination string,这是我所期望的。

在我处理过的所有语言中,字符范围(即 [az])都需要升值。很高兴您已经找到了解决方案。

或者编写一个您可以使用的函数tr "[a-z]" "[$( revCharRange a-z )]" (由于创建反向字符范围所需的子外壳,这将更加昂贵。

编辑revCharRange a-z输出 位置zyxw...cba

我希望这有帮助。

于 2011-12-08T01:46:34.903 回答