Small change to wc
Kostik Belousov
kostikbel at gmail.com
Fri Dec 5 15:15:07 PST 2008
On Fri, Dec 05, 2008 at 03:10:56PM -0800, Sheldon Givens wrote:
> What's the problem having it? The total code is mere bytes and it eases the
> transition for others who are migrating from Linux.
> You're absolutely right in that it can be done with awk (fairly simply, too)
> but it doesn't hurt to explore options. Additionally, with awk, you can't
> get other figures with the same command, which increases ease of use.
> IE: What's the equivalent to "wc -clwL" in awk? Would you really rather run
> wc -clw && awk '{if(length>x){x=length}}END{if(x>0){print x}else{print
> 0}}'`?
>
> Isn't wc -L a more elegant solution than awk
> '{if(length>x){x=length}}END{if(x>0){print x}else{print 0}}'`?
>
> Should I continue?
Real argument pro is that you have one less thing to worry when you
trying to run some script, written on Linux, on the FreeBSD system.
>
> On Fri, Dec 5, 2008 at 2:48 PM, Garrett Cooper <yanefbsd at gmail.com> wrote:
>
> > On Fri, Dec 5, 2008 at 2:14 PM, Sheldon Givens <sheldon at sigsegv.ca> wrote:
> > > Hello everyone,
> > > In the process of migrating the last of a few Linux servers to FreeBSD,
> > we
> > > ran in to a bit of a snag with one of our scripts when BSD wc didn't have
> > an
> > > equivalent to the Linux -L. This flag tells wc to keep track of the
> > longest
> > > line in the input.
> > >
> > > Here's a little diff to add this functionality to BSD wc.
> > >
> > > With this patch, an additional parameter is added to output that shows
> > the
> > > length of the longest line
> > >
> > > My apologies if this is in the wrong format. I don't often post here.
> > >
> > > Happy Holidays,
> > >
> > > Sheldon Givens
> > >
> > >
> > > ---snip---
> > > 65,66c65,66
> > > < uintmax_t tlinect, twordct, tcharct;
> > > < int doline, doword, dochar, domulti;
> > > ---
> > >> uintmax_t tlinect, twordct, tcharct, tlongline;
> > >> int doline, doword, dochar, domulti, dolongline;
> > > 78c78
> > > < while ((ch = getopt(argc, argv, "clmw")) != -1)
> > > ---
> > >> while ((ch = getopt(argc, argv, "clmwL")) != -1)
> > > 93a94,96
> > >> case 'L':
> > >> dolongline = 1;
> > >> break;
> > > 127a131,132
> > >> if (dolongline)
> > >> (void)printf(" %7ju", tlongline);
> > > 137c142
> > > < uintmax_t linect, wordct, charct;
> > > ---
> > >> uintmax_t linect, wordct, charct, llcnt, tmpll;
> > > 146c151
> > > < linect = wordct = charct = 0;
> > > ---
> > >> linect = wordct = charct = llcnt = tmpll = 0;
> > > 171c176,179
> > > < if (*p == '\n')
> > > ---
> > >> if (*p == '\n') {
> > >> if (tmpll > llcnt)
> > >> llcnt = tmpll;
> > >> tmpll = 0;
> > > 172a181
> > >> } else { tmpll++; }
> > > 179a189,192
> > >> if (dolongline) {
> > >> tlongline = llcnt;
> > >> (void)printf(" %7ju", tlongline);
> > >> }
> > > 197c210
> > > < return (0);
> > > ---
> > >> return (0);
> > > 231a245
> > >> tmpll++;
> > > 234c248,251
> > > < if (wch == L'\n')
> > > ---
> > >> if (wch == L'\n') {
> > >> if (tmpll > llcnt)
> > >> llcnt = tmpll;
> > >> tmpll = 0;
> > > 235a253
> > >> }
> > > 258a277,280
> > >> if (dolongline) {
> > >> tlongline = llcnt;
> > >> (void)printf(" %7ju", llcnt - 1);
> > >> }
> > > 266c288
> > > < (void)fprintf(stderr, "usage: wc [-clmw] [file ...]\n");
> > > ---
> > >> (void)fprintf(stderr, "usage: wc [-clmwL] [file ...]\n");
> > >
> > > ---unsnip---
> >
> > What's the plus side of having this? I can accomplish the same with
> > something like awk without the additional overhead, which would be
> > guaranteed to be portable.
> > -Garrett
> >
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20081205/ca8fc173/attachment.pgp
More information about the freebsd-hackers
mailing list