Saya mengerti cara menggunakan fungsi printf awk, tetapi saya tidak ingin menentukan setiap bidang.
Misalnya, anggap ini file saya:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
Saya ingin memformatnya sehingga bidang pertama setiap rekaman adalah lebar c11 - sel terpanjang di bidang pertama:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Saya mengerti bahwa saya dapat menentukan:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
Anggap saja saya tahu lebar kolom pertama yang saya inginkan, tetapi saya TIDAK tahu berapa banyak bidang dalam file. Pada dasarnya saya ingin melakukan sesuatu seperti:
... '{printf "%-3s|", $1}'
... dan kemudian cetak bidang lainnya dalam format aslinya.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(di sini menambahkan tanda kutip tambahan untuk menyisipkan 3 ruang tersebut ketika komentar SE memeras ruang yang berdekatan menjadi satu)