On 06.08.2025 11:23, Bruce wrote:
The other day I found myself unable to count field sizes accurately so I wrote this little helper.
It's nice, but it should at least be mentioned that it supports only
the subset of GNU Awk's FIELDWIDTHS syntax variants as you depicted
it; like "1 3 5". While the optional final '*' would be no issue -
since the purpose is obviously to create the correct numbers for the FIELDWIDTHS variable - the optional "skip-space" specification might
be an issue.
For example; for you sample data "A dummy line from a file" I suppose
you'd want to rather obtain a FIELDWIDTHS = "1 1:5 1:4 1:4 1:1 1:4";
and the helper doesn't help you here. (Although an extension of your
tool could be written.)
Some of the confusion that was reported in this thread could likely
have been alleviated by a better fitting data sample. Maybe
FIELDWIDTHS = "1 5 4 4 1 4" # test spec
ADummyLineFromAFile # input
1222223333444456666 # output
would have made the intention clearer.
Janis
NR == 1 { # Pick a line
print
nf = split(FIELDWIDTHS, fw)
for (i = 1; i <= nf; i++)
for (j = 1; j <= fw[i]; j++)
printf "%d", (i % 10)
print ""
}
Example:
with FIELDWIDTHS = "1 3 5"
Output:
A dummy line from a file
122233333
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)