![如何在bash中反转由数字组成的字符串?](https://linux22.com/image/51875/%E5%A6%82%E4%BD%95%E5%9C%A8bash%E4%B8%AD%E5%8F%8D%E8%BD%AC%E7%94%B1%E6%95%B0%E5%AD%97%E7%BB%84%E6%88%90%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
计算数字中的数字的最佳方法是什么?
例如
$ 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 -
将每行中的数字连续粘贴回一行