Scroll to navigation

VNL-SORT(1) vnlog VNL-SORT(1)

NAME

vnl-sort - sorts an vnlog file, preserving the legend

SYNOPSIS

 $ cat a.vnl
 # a b
 AA 11
 bb 12
 CC 13
 dd 14
 dd 123

 Sort lexically by a:
 $ <a.vnl vnl-sort -k a
 # a b
 AA 11
 CC 13
 bb 12
 dd 123
 dd 14

 Sort lexically by a, ignoring case:
 $ <a.vnl vnl-sort -k a --ignore-case
 # a b
 AA 11
 bb 12
 CC 13
 dd 123
 dd 14

 Sort lexically by a, then numerically by b:
 $ <a.vnl vnl-sort -k a -k b.n
 # a b
 AA 11
 CC 13
 bb 12
 dd 14
 dd 123

 Sort lexically by a, then numerically by b in reverse:
 $ <a.vnl vnl-sort -k a -k b.nr
 # a b
 AA 11
 CC 13
 bb 12
 dd 123
 dd 14


 Sort by month and then day:
 $ cat dat.vnl
 # month day
 March 5
 Jan 2
 Feb 1
 March 30
 Jan 21

 $ <dat.vnl vnl-sort -k month.M -k day.n
 # month day
 Jan 2
 Jan 21
 Feb 1
 March 5
 March 30

DESCRIPTION

  Usage: vnl-sort [options] logfile logfile logfile ... < logfile

This tool sorts given vnlog files in various ways. "vnl-sort" is a wrapper around the GNU coreutils "sort" tool. Since this is a wrapper, most commandline options and behaviors of the "sort" tool are present; consult the sort(1) manpage for detail. The differences from GNU coreutils "sort" are

  • The input and output to this tool are vnlog files, complete with a legend
  • The columns are referenced by name, not index. So instead of saying

      sort -k1
        

    to sort by the first column, you say

      sort -k time
        

    to sort by column "time".

  • The fancy "KEYDEF" spec from "sort" is only partially supported. I only allow us to sort by full fields, so the start/stop positions don't make sense. I do support the "OPTS" to change the type of sorting in a given particular column. For instance, to sort by month and then by day, do this (see example above):

      vnl-sort -k month.M -k day.n
        
  • "--files0-from" is not supported due to lack of time. If somebody really needs it, talk to me.
  • "--output" is not supported due to an uninteresting technical limitation. The output always goes to standard out.
  • "--field-separator" is not supported because vnlog assumes whitespace-separated fields
  • "--zero-terminated" is not supported because vnlog assumes newline-separated records

Past that, everything "sort" does is supported, so see that man page for detailed documentation. Note that all non-legend comments are stripped out, since it's not obvious where they should end up.

BUGS

This and the other "vnl-xxx" tools that wrap coreutils are written specifically to work with the Linux kernel and the GNU coreutils. None of these have been tested with BSD tools or with non-Linux kernels, and I'm sure things don't just work. It's probably not too effortful to get that running, but somebody needs to at least bug me for that. Or better yet, send me nice patches :)

SEE ALSO

sort(1)

REPOSITORY

https://github.com/dkogan/vnlog/

AUTHOR

Dima Kogan "<dima@secretsauce.net>"

LICENSE AND COPYRIGHT

Copyright 2018 Dima Kogan "<dima@secretsauce.net>"

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

2019-01-22