Bashで数値で構成された文字列を反転するには?

Bashで数値で構成された文字列を反転するには?

数字の桁数を計算する最良の方法は何ですか?

例えば

$ 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

源泉Unix School

ファイルを完全に元に戻す必要がある場合は、次のように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 -各行の数字をもう一度行に連続して貼り付けます。

関連情報