Awk'ın printf işlevini nasıl kullanacağımı anlıyorum, ancak her alanı belirtmek istemiyorum.
Örneğin, bunun benim dosyam olduğunu varsayalım:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
Her kaydın ilk alanı, ilk alandaki en uzun hücre olan c11 genişliği olacak şekilde biçimlendirmek istiyorum:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Anlayabileceğimi anlıyorum:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
İlk sütunun genişliğinin ne olmasını istediğimi bildiğimi varsayalım, ancak dosyada kaç alan olduğunu bilmiyorum. Temelde şöyle bir şey yapmak istiyorum:
... '{printf "%-3s|", $1}'
... ve diğer alanları orijinal biçimlerinde yazdırın.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(burada SE yorumları bitişik boşlukları bir