awkのprintf関数の使用方法は理解していますが、すべてのフィールドを指定する必要はありません。
たとえば、これが私のファイルだとします。
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
すべてのレコードの最初のフィールドがc11の幅になるようにフォーマットします-最初のフィールドで最も長いセル:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
指定できることを理解しています:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
最初の列の幅を知りたいが、ファイル内のフィールド数がわからないとします。基本的に私は次のようなことをしたいです:
... '{printf "%-3s|", $1}'
...その後、残りのフィールドを元の形式で印刷します。
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(ここではSEのコメントが一つに連続したスペースを絞るよう、これらの3つのスペースを挿入するために、余分な引用符を追加)