数字の桁数を計算する最良の方法は何ですか?
例えば
$ echo 123 | hook
321
$ echo 12358 | hook
85321
答え1
:~> echo 123456 | rev
654321
動作する必要があります。使い方はとても簡単です。男性の場合:
NAME
rev - 1 つ以上のファイル行を逆に置き換えます。まとめ改訂
[文書...]説明
rev ユーティリティは、指定されたファイルを標準出力にコピーし、各行の文字順序を逆に置き換えます。ファイルを指定しない場合は、標準入力を読み込みます。
利用できない場合は、以下を使用することもできますawk
。
:~> echo 123456 | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}'
654321
ファイルを完全に元に戻す必要がある場合は、次のようにtac
コマンドラインに追加できます。rev
tac myfile | rev
答え2
に限定されない場合は、bash
以下を使用してくださいzsh
。
forward=123
backward=${(j::)${(Oas::)forward}}
変数拡張フラグは次のとおりです。
s::
: 空の文字列を分割するため、文字ごとに1つの要素があります。Oa
:結果配列を逆に置き換えます(O
逆順の場合はa
配列添字順の場合)。j::
:要素を空の文字列に連結します。
答え3
あなたはそれを探していますかrev
?
echo 123|rev
321
答え4
rev
これは明らかで、おそらく最高の答えです。しかし、rev
必ずしもデフォルトでインストールされるわけではありません。 coreutils のみを使用してこれを行うには、次のような長いコマンドを使用できます。
echo 123 | fold -w1 | tac | paste -d '' -s -
fold -w1
各数字を1行に入力してください。tac
はリバースですcat
。つまり、行の順序を逆に置き換えます。paste -d '' -s -
各行の数字をもう一度行に連続して貼り付けます。