On Mon, Dec 26, 2011 at 05:42:25PM +0100, Jim Meyering wrote: > Pádraig Brady wrote: > > > On 12/25/2011 12:54 PM, Adrien Kunysz wrote: > >> * doc/coreutils.texi: document the new feature > >> * src/uniq.c (find_end): new function > >> (check_file): use find_end() to determine when to stop comparing > >> (usage): document the new feature > >> (main): expose the new feature to user > >> * tests/misc/uniq: add tests to exercise the new code > >> --- > >> doc/coreutils.texi | 17 +++++++++++++ > >> src/uniq.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++--- > >> tests/misc/uniq | 15 +++++++++++ > >> 3 files changed, 97 insertions(+), 4 deletions(-) > >> > >> I have recently found myself wishing I could have uniq(1) skip > >> the last N fields before comparison. I am aware of the rev(1) trick > >> but I don't find it very satisfactory. So I ended up patching uniq > >> and implementing the feature for characters skipping as well. > >> > >> Documentation and tests included. Tests have also been run within > >> Valgrind on x86_64. > > > > Thank you for being so thorough. > > > > Hmm, this is quite unusual functionality. > > I was about to merge this with a previous feature request: > > http://debbugs.gnu.org/5832 > > But in fact supporting --key would not provide this functionality. > > > > Why does `rev | uniq -f | rev` not suffice for you? It just doesn't look very nice to me but I admit it actually works fine. > > BTW you would need to start the copyright assignment process for > > this feature, but we'd have to decide if it generally useful enough > > to proceed. Perhaps a concrete example would help. I ended up refactoring my script in such a way that I don't need either so I don't even have a concrete use case for this any more :) If anybody finds this useful enough to be merged I am happy to go through the copyright assignment process. > I agree that it's borderline. > If we add this functionality, I'd prefer to do it without adding new > options. Instead, just accept negative values for N in the three > options that accept counts: > > $ uniq --help|grep -w N > -f, --skip-fields=N avoid comparing the first N fields > -s, --skip-chars=N avoid comparing the first N characters > -w, --check-chars=N compare no more than N characters in lines I initially wanted to implement it by using negative values for -f but then realised it would mean you can't say "-f2 -F3" for example. I wasn't aware of the feature request for --key and I think that certainly looks more useful (with or without supporting negative field indexes). I might try to write a patch for that later but don't hold your breath.