数字で数字を表示する最良の方法は何ですか?
例えば。
$ echo 123 | hook
321
$ echo 12358 | hook
85321
:~> echo 123456 | rev
654321
うまくいくはずです。使い方はかなり簡単です。男から:
名前
rev-ファイルの行を反転あらすじ
rev [ファイル...]説明
revユーティリティは、指定されたファイルを標準出力にコピーし、各行の文字の順序を逆にします。ファイルが指定されていない場合は、標準入力が読み取られます。
利用できない場合は、awk
も使用できるはずです。
:~> echo 123456 | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}'
654321
ソース NIXスクール
最終的にファイルを完全に反転する必要がある場合は、次のようにtac
をrev
コマンドラインに追加できます。
tac myfile | rev
bash
に限定されない場合、zsh
を使用:
forward=123
backward=${(j::)${(Oas::)forward}}
それらは可変拡張フラグです:
s::
:空の文字列で分割するため、文字ごとに1つの要素Oa
:結果の配列を逆にします(逆順の場合はO
、配列の添字順の場合はa
)。j::
:空の文字列で要素を結合します。rev
をお探しですか?
echo 123|rev
321
#!/bin/bash
#set -xv
string="$1"
reverse_string=""
string_length="${#string}"
while (( "$string_length">=1 ))
do
string_length=$(( $string_length - 1 ))
reverse_string="$reverse_string${string:$string_length:1}"
done
echo "$reverse_string"
ファイルを実行可能にする
$ chmod +x reverse_string
$ ./reverse_string 123456789
98765432
rev
は明白で、おそらく最良の答えです。ただし、rev
は常にデフォルトでインストールされるわけではありません。 coreutilsだけでこれを実行したい場合は、このより長いコマンドを使用できます。
echo 123 | fold -w1 | tac | paste -d '' -s -
fold -w1
は、各桁を行に配置しますtac
は逆のcat
です。つまり、行の順序を逆にしますpaste -d '' -s -
は、各行の数字を連続して1行に貼り付けます。