如何在linux中移动一些字符串

时间:2014-06-26 12:20:21

标签: linux string bash text

是否有一个班轮将一个字符串中的所有字符移动一些i个号码。输入字符串可以包含任何ascii字符。这将是一个密码。

例如,如果ba之后,command 1 "ab"返回"bc",则command 3 "ab"会返回"de"。它应该适用于任何ascii字符而不仅仅是字母。

3 个答案:

答案 0 :(得分:0)

您想要的命令称为caesar。

答案 1 :(得分:0)

使用Perl

 echo -n bbb | perl -F'' -ane 'foreach(@F){$_++; printf "$_"}END{print "\n"}'
 ccc

如果您需要移动N个字符(在4下方的情况下):

echo -n bbb | perl -F'' -ane 'foreach(@F){ $a=ord($_); $a+=4; print chr($a)} END{print "\n"}'
fff

转向负值:

echo -n bbb | perl -F'' -ane 'foreach(@F){ $a=ord($_); $a-=1; print chr($a)} END{print "\n"}'
aaa

答案 2 :(得分:0)

这个gawk命令为你提供了ascii code+1的新序列:

awk 'BEGIN{FS=OFS="";s=2;for(n=0;n<=127;n++)ord[sprintf("%c",n)]=n}
          {for(i=1;i<=NF;i++)$i=sprintf("%c",(ord[$i]+s)%127)}7'

使用步骤2移动字符串进行测试:

kent$  echo "xyab+123"|awk 'BEGIN{FS=OFS="";s=2;for(n=0;n<=127;n++)ord[sprintf("%c",n)]=n}{for(i=1;i<=NF;i++)$i=sprintf("%c",(ord[$i]+s)%127)}7' 
z{cd-345

您只需要将s作为变量传递,以定义移位步骤。