如何在bash中反转由数字组成的字符串?

如何在bash中反转由数字组成的字符串?

计算数字中的数字的最佳方法是什么?

例如

$ echo 123 | hook
321
$ echo 12358 | hook
85321 

答案1

:~> echo 123456 | rev
654321

它应该有效。使用方法非常简单。来自男人:

NAME
rev - 反转一个或多个文件的行

概要
修订版 [文件 ...]

描述
rev 实用程序将指定的文件复制到标准输出,反转每行中的字符顺序。如果未指定文件,则读取标准输入。

如果不可用,您还应该能够使用awk

:~> echo 123456 | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}'
654321

来源Unix学校

如果您最终需要完全反转文件,您可以像这样 添加tac到 命令行:rev

tac myfile | rev 

答案2

对于那些不限于bash, 与zsh:

forward=123
backward=${(j::)${(Oas::)forward}}

这些是变量扩展标志:

  • s:::在空字符串上拆分,因此每个字符一个元素
  • Oa:反转结果数组(O对于反转顺序,a对于数组下标顺序)。
  • j:::用空字符串连接元素。

答案3

你在找吗rev

echo 123|rev
321

答案4

rev这是显而易见的,也可能是最好的答案。但rev并不总是默认安装。如果你想纯粹使用 coreutils 来完成此操作,你可以使用这个更长的命令:

echo 123 | fold -w1 | tac | paste -d '' -s -
  • fold -w1将每个数字放在一行上
  • tac是一个反向cat,即颠倒行的顺序
  • paste -d '' -s -将每行中的数字连续粘贴回一行

相关内容