Subject: Re: bug#46346: wc --human-readable or --verbose

From: Pádraig Brady <[email-masked]>
Date: Sat, 6 Feb 2021 15:03:51 +0000

On 06/02/2021 13:38, 積丹尼 Dan Jacobson wrote:
> wc needs a --verbose option. Else one is forced to do:
> 
> $ file=e.html; echo $file:; for i in bytes chars lines words; do echo -en $i:\\t; wc --$i < $file; done
> e.html:
> bytes:  31655
> chars:  29141
> lines:  643
> words:  1275
> 
> I mean sometimes we want to send the output to a real person, and
> currently all wc makes is:
> 
> $ wc e.html
>    643  1275 31655 e.html
> $ file=e.html; for i in bytes chars lines words; do wc --$i < $file; done
> 31655
> 29141
> 643
> 1275
> 
> So there needs to be a --verbose or --human-readable like du(1)... oops
> I don't mean saying 234M... yet.

For standard text files, lines < words < bytes
so the counts would be apparent from their relative sizes.
But I agree it's not generally the case,
and also ambiguous as to whether it's chars or bytes by default (it's bytes),
So quite user unfriendly by default.

I see FreeBSD wc supports --libxo,
which supports json output which is a bit more general
and close to what you want:
https://juniper.github.io/libxo/libxo-manual.html

So for this example it would be:

   $ wc --libxo json,pretty,warn e.html
   {
     "wc": {
       "file": [
         {
           "lines": 643,
           "words": 1275,
           "bytes": 31655,
           "filename": "e.html"
         }
       ]
     }
   }

BTW I see that for FreeBSD's wc character and byte counts are mutually exclusive,
so they're always described as "characters" in the output, which is confusing I think.

cheers,
Pádraig