bash - 如何将字符串的每个字母移动给定数量的字母?

标签 bash string

如何在不使用硬编码字典的情况下,在 bash 中将字符串的每个字母向下或向上移动给定数量的字母?

最佳答案

你是说像 ROT13 这样的东西吗:

pax$ echo 'hello there' | tr '[a-z]' '[n-za-m]'
uryyb gurer

pax$ echo 'hello there' | tr '[a-z]' '[n-za-m]' | tr '[a-z]' '[n-za-m]'
hello there

对于想要提供任意旋转(0 到 26)的更通用的解决方案,您可以使用:

#!/usr/bin/bash

dual=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
phrase='hello there'
rotat=13
newphrase=$(echo $phrase | tr "${dual:0:26}" "${dual:${rotat}:26}")
echo ${newphrase}

关于bash - 如何将字符串的每个字母移动给定数量的字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6441260/

相关文章:

BASH - 对具有某种扩展名的所有文件执行命令

string - 从特定字符开始截断 NSString 的一部分

windows - 如何在 bash/ubuntu 下通过 SSH 在 Windows 上使用 hg?

linux - 根据文件名对文件进行排序

arrays - Shell Script 正则表达式匹配数组并处理每个数组元素

python - 重命名有间隙的连续图像文件

python - 如何将字符串列表更改为整数 - Python

string - 如何在 O(n) 中计算后续子字符串中的匹配字符

java - 将输入扫描到字符数组Java

c++ - 子串换行