1

私はファイルを持っています:

 nr  kl1  kl2  kl3  kl4 
 d1  15   58   63   58 
 d2       3    3      
 d3  3         8    0

印刷したい:

 nr  kl1  kl2  kl3  kl4 
 d1  15   58   63   58 
 d2  0    3    3    0  
 d3  3    0    8    0

gsub ソリューションを試しましたが、うまくいきません。

awk '{gsub(/ /, 0, $2); print }' file

ご協力ありがとうございました。

編集:

Ed Mortonソリューションは gawk では機能しますが、mawk では機能しません。

$ gawk 'BEGIN{ FIELDWIDTHS="5 5 5 5 5"; OFS="" }NR>1 {for (i=2;i<=NF;i++)$i=sprintf("%-5d",$i)}{ sub(/ +$/,""); print }' file
 nr  kl1  kl2  kl3  kl4
 d1  15   58   63   58
 d2  0    3    3    0
 d3  3    0    8    0

.

$ mawk 'BEGIN{ FIELDWIDTHS="5 5 5 5 5"; OFS="" }NR>1 {for (i=2;i<=NF;i++)$i=sprintf("%-5d",$i)}{ sub(/ +$/,""); print }' file 
 nr  kl1  kl2  kl3  kl4
d115   58   63   58
d23    3
d33    8    0

同じことをする方法は?

4

1 に答える 1

4

フィールドがスペースで区切られておらず、幅が固定されているため、試したことが機能しませんでした。GNU awk でこれを試してください:

BEGIN{ FIELDWIDTHS="5 5 5 5 5"; OFS="" }

NR>1 {
   for (i=2;i<=NF;i++)
      $i=sprintf("%-5d",$i)
}
{ sub(/ +$/,""); print }
于 2012-11-01T13:42:45.993 に答える