Perhaps some examples will clarify the difference.  Assume the file count
contains the numbers from 1 to 99, one per line.  Here is the cols command
formatting that file:

$ cols -w 60 count
1  8   15  22  29  36  43  50  57  64  71  78  85  92  99
2  9   16  23  30  37  44  51  58  65  72  79  86  93
3  10  17  24  31  38  45  52  59  66  73  80  87  94
4  11  18  25  32  39  46  53  60  67  74  81  88  95
5  12  19  26  33  40  47  54  61  68  75  82  89  96
6  13  20  27  34  41  48  55  62  69  76  83  90  97
7  14  21  28  35  42  49  56  63  70  77  84  91  98

Here is the pr command you suggested.  Note that it doesn't actually provide
multi-column formatting:

$ pr -t -w 60 count
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...

Here is a pr command that provides multi-column formatting.  Note that I had
to provide -14 to request 14 columns of output:

$ pr -t -w 60 -14 count
1   9   16  23  30  37  44  51  58  65  72  79  86  93
2   10  17  24  31  38  45  52  59  66  73  80  87  94
3   11  18  25  32  39  46  53  60  67  74  81  88  95
4   12  19  26  33  40  47  54  61  68  75  82  89  96
5   13  20  27  34  41  48  55  62  69  76  83  90  97
6   14  21  28  35  42  49  56  63  70  77  84  91  98
7   15  22  29  36  43  50  57  64  71  78  85  92  99


The last command works, but 14 is a "magic number" that I had to guess.  The
cols command calculates this for you.

More complex input would reveal additional problems with the pr command.
For example:

  -- all columns are the same width, so the data isn't packed very
efficiently
  -- strings that are significantly longer than other strings in a column
are truncated.  This is frequently unsatisfactory.

The pr command wasn't really designed for multicolumn output to a terminal
screen and people shouldn't have to live with its shortcomings.  I see
people writing slow scripts in bash and awk all the time that solve only
half the problem of multicolumn output.  Since they are trying to emulate
the output of the ls command, why not go right to the source and provide a
speedy c routine that has all of the ls command's multicolumn features?

The idea of fixing the pr command is interesting, but I assume there are a
lot of scripts out there that depend on its current behavior, so this might
be more disruptive than introducing a new command.

--Stephen



-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of
[EMAIL PROTECTED]
Sent: Monday, August 08, 2005 7:16 AM
To: Stephen Jungels
Cc: [email protected]
Subject: Re: cols command for columnar output


Stephen Jungels wrote:
> Because I needed nice columnar output similar to the ls command's simple
> file list, I went in and ripped out the columnar logic from GNU ls and
> created a nice simple "cols" command.  It does one thing only and does it
> well, like a good UNIX command should.
>
> (pr isn't good enough because it requires you to guess how many columns
will
> fit across the screen, and it truncates long strings.  cols makes each
> column just wide enough for its longest string and fits as many columns as
> possible across the screen.)

Why not fix pr if it doesn't do as required?
Anyway...

pr -T -W$COLUMNS

Add -J to control truncation/wrapping

--
Pádraig Brady - http://www.pixelbeat.org
--


_______________________________________________
Bug-coreutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-coreutils



_______________________________________________
Bug-coreutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to