列の幅が入力の最長行になるようにテキストを中央に揃え、両側にパディングを揃える簡単な方法はありますか?
たとえば、次のようになります。
aaa
bbbb
c
ddddd
ee
次のようになります(ドットはスペースを表します)。
.aaa.
bbbb.
..c..
ddddd
.ee..
どんなツールでも可能です。sed
それawk
または多くのcoreutils
ツールの一つです。
編集する:出力結果を誤解した方もいらっしゃるようです。出力が入力されます。スペース、ポイントではありません。ここでは、より明確にするために点を使用しています。
ベストアンサー1
vimを使用できます。通常モードでは:
:%center 5
...ファイルの各行に対して動作し(この場合は意味%
)、最大5文字まで囲みます(vimドキュメントでは列と呼ばれます)。これはあなたが説明するものと正確に一致します。ファイルから最も長い行を取得するには(centerコマンドの場合)、wc -L file.txt
vimから。
:! wc -L %
残念ながら、これはバニラviでは使用できませんが、「linux」というタグが付いているため、リポジトリには少なくともvimがあります。
1行でこれを行うこともできます。
vim file.txt -c '%center 5' -c 'wq' &> /dev/null
...しかし、それが仕事をする最速の方法ではないと確信しています。