tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Proposed modification to seq



On Tue, Dec 18, 2018 at 12:16:58PM +1100, Simon Burge wrote:
> Greg Troxel wrote:
> 
> > aran%100acres.us@localhost writes:
> >
> > > The seq command behaves a little differently than I expect.  I needed a comma
> > > separated list of integers, but seq gave me this:
> > >
> > >  $seq -s , 1 3
> > >  1,2,3,$
> > >
> > > Notice the extra comma and no trailing return.  The comma is troublesome for my
> >
> >  [ ... ]
> >
> > It could just be a bug.  But the man page is inconsistent.
> >
> > I suspect there is almost no use of -s.  But I wonder.
> >
> > If this change makes seq with -s behave like GNU seq, and more closely
> > aligns with seq's own man page, that seems like a reasonable thing.
> 
> GNU coreutils seq does this:
> 
> 	otos:~ 2057> seq -s , 1 3
> 	1,2,3
> 
> Looking at their seq.c:
> 
> 	/* The string used to separate two numbers.  */
> 	static char const *separator;
> 
> 	/* The string output after all numbers have been output.
> 	   Usually "\n" or "\0".  */
> 	static char const terminator[] = "\n";
> 
> with no option to change the terminator option.
> 
> I agree that Aran's suggested change looks a good idea.
> 
> Cheers,
> Simon.

It has been a while since I wrote that code but my recollection is
that it isn't necessarily a bug. That GNU copied and changed the
meaning of -s (again provided my recollection is correct) isn't
surprising either. I'd need to dig back to see what GNU seq had 20
years ago when I originally wrote seq.

I will agree that the -s behavior may violate POLA.

The default "separator" is a newline ('\n').  The -s was to change
this to something else but not assume that the last "separator" be
a terminating newline.  This is why I added the -t option.

The current -s option allows for using interesting separators like
'\r' (carriage return) for a "spinning counter".

Note that FreeBSD has picked up the NetBSD version of seq (and by
that so has Apple for OSX). GNU shouldn't necessarily be considered
as the 'standard'.

-- 
Brian Ginsbach


Home | Main Index | Thread Index | Old Index