UNIXで列を中央揃えにする方法は?

UNIXで列を中央揃えにする方法は?

コマンドを使用して列を中央揃えしようとしていますcolumn

出力は次のようになります。

temperatures  
    50  
    12  
    89  
    63  

どうすればいいですか?

ベストアンサー1

私はあなたがそのコマンドを使用したいことを知る前にこの答えを書きましたが、columnそれが必要でない場合は、次のbashシェルスクリプトを使用してテキストを中央に合わせることができます。

#!/bin/bash
set -e    # exit the script if something goes wrong

width=12
data="temperatures 50 12 89 63"

for word in $data; do
    strlen=$(printf $word | wc -c)
    w=$(( ($width - $strlen)/2 ))
    printf "%${w}s%s\n" "" $word
done

仕組み:

  • $width列の幅です
  • for印刷された各単語を繰り返します。$data
  • $strlen現在の単語の長さ(バイト)。
  • $w中央に置く単語の前に印刷されるスペースの数。
  • printf$wスペースの後に単語を印刷します。

出力:

temperatures
     50
     12
     89
     63

このスクリプトは、シングルバイトのテキストエンコーディングでのみ機能します。strlenインクルードを処理するには、この行を変更する必要があります。

おすすめ記事