文字列内の点で区切られた要素の順序を逆に置き換えます。

文字列内の点で区切られた要素の順序を逆に置き換えます。

次の入力文字列があります。

arg1.arg2.arg3.arg4.arg5

私が望む出力は次のとおりです。

arg5.arg4.arg3.arg2.arg1

パラメータは常に5つではなく、2〜10個でもかまいません。

Bashスクリプトでこれをどのように実行できますか?

ベストアンサー1

  • trtac++の組み合わせを使用してくださいpaste

    $ tr '.' $'\n' <<< 'arg1.arg2.arg3.arg4.arg5' | tac | paste -s -d '.'
    arg5.arg4.arg3.arg2.arg1
    
  • それでもbashを好むなら、これを行うことができます。

    IFS=. read -ra line <<< "arg1.arg2.arg3.arg4."
    let x=${#line[@]}-1; 
    while [ "$x" -ge 0 ]; do 
          echo -n "${line[$x]}."; 
          let x--; 
    done
    
  • 使用perl

    $ echo 'arg1.arg2.arg3.arg4.arg5' | perl -lne 'print join ".", reverse split/\./;'
    arg5.arg4.arg3.arg2.arg1
    

おすすめ記事