7

Linux マシン ( Red Hat Linux 5.1) を使用しており、Bash スクリプトに次のタスクを追加する必要があります。

次の ASCII 文字を計算する Linux コマンドまたは Bash 構文はどれですか?

備考 – コマンド構文はAWK /Perlでもかまいませんが、この構文は私の Bash スクリプトに含まれている必要があります。

例:

 input                  results

 a    --> the next is   b
 c    --> the next is   d
 A    --> the next is   B
4

5 に答える 5

8

翻訳 ( tr)を使用します。

echo "aA mM yY" | tr "a-yA-Y" "b-zB-Z"

それは印刷します:

bB nN zZ

于 2012-05-14T21:57:51.457 に答える
4

Perl の++オペレーターは、文字列もある程度処理します。

perl -nle 'print ++$_'

たとえば、それ以外の場合は を返すため-l、ここでは autochomp を使用したオプションが必要です。a\n1

于 2012-05-14T21:58:57.303 に答える
0
perl -le "print chr(ord(<>) + 1)"

相互の作用:

breqwas@buttonbox:~$ perl -le "print chr(ord(<>) + 1)"
M
N

非インタラクティブ:

breqwas@buttonbox:~$ echo a | perl -le "print chr(ord(<>) + 1)"
b
于 2012-05-14T21:56:01.037 に答える
0

文字値:

c="a"

文字を ASCII 値に変換するには:

v=$(printf %d "'$c")

この ASCII 値に追加する値:

add=1

$add を追加して ASCII 値を変更するには:

((v+=add))

結果をcharに変換するには:

perl -X -e "printf('The character is %c\n', $v);"

以前-Xはすべての警告を無効にしていました


これらすべてを 1 行にまとめて、結果を変数 $r に入れることができます。

c="a"; add=1; r=$(perl -X -e "printf('%c', $(($add+$(printf %d "'$c"))));")

結果を印刷できます:

echo "$r"

結果を返す関数を作成できます。

achar ()
{
     c="$1"; add=$2
     printf "$(perl -X -e "printf('%c', $(($add+$(printf %d "'$c"))));")"
}

次の関数を使用できます。

x=$(achar "a" 1) // x = the character that follows a by 1

または、ループを作成できます。

array=( a k m o )
for l in "${array[@]}"
do
     echo "$l" is followed by $(achar "$l" 1)
done
于 2016-08-24T05:35:25.073 に答える