collate(1) -- Organize text input by node
==============================

## SYNOPSIS

`<other command> | collate [-a] [-d] [-w] [-s] [-c] [-r] [-l lognametemplate]`

## DESCRIPTION

**collate** takes input in the form of <nodename>: <data> and groups
the output for each <nodename> together, and checks for identical data to further group nodes together.
Output groups are sorted in descending size such that the topmost group is the largest, and the
last output group is the smallest.  In the event of equally sized output groups,
the groups are sorted alphanumerically by their header, and each header has
node and group names sorted alphanumerically.

## OPTIONS

* `-a`, `--abbreviate`:
   Use confluent to attempt to shorten the noderange.  This can help identify
   when output differs along a telling group boundary.  For example, if
   output suggests a large number of nodes are unreachable, abbreviate
   showing 'rack1' as being unreachable may make more obvious a possible cause.

* `-d`, `--diff`:
   Express all but the most common result group in terms of diff from
   the most common result group

* `-l`, `--log`:
   Save output per node to individual log files, replacing {node} in the name
   with the nodename of each

* `-w`, `--watch`:
   Update results dynamically as data becomes available, rather than
   waiting    for the command to fully complete.

* `-s`, `--skipcommon`:
   Suppress printing of the most common result text group.  This is used to
   focus on stray output against a well known and expected result.
   
* `-c`, `--count`:
   Print a count of the number of nodes in an output group under the 
  noderange.
  
 * `-r`, `--reverse`:
    Rather than starting with most common to least common, start with
    the least common and print the most common last.
   
## EXAMPLES
 * Organizing power state of multiple nodes:  
  `# nodepower n1-n12 | collate`  
  `====================================`  
  `n1,n2,n3,n4,n7,n8,n9,n10,n11,n12`  
  `====================================`  
  `on`  
  ` `  
  `====================================`  
  `n5,n6`  
  `====================================`  
  `off`  

* Using diff to detect distinct UEFI configuration

  `# pasu n1-n4 show Processors|collate -d -s`  
  `====================================`  
  `n3`  
  `====================================`  
  `@@`  
  `  Processors.ProcessorPerformanceStates=Enable`  
  `  Processors.C-States=Enable`  
  `  Processors.PackageACPIC-StateLimit=ACPI C3`  
  `- Processors.C1EnhancedMode=Enable`  
  `+ Processors.C1EnhancedMode=Disable`  
  `- Processors.Hyper-Threading=Enable`  
  `+ Processors.Hyper-Threading=Disable`  
  `  Processors.ExecuteDisableBit=Enable`  
  `  Processors.IntelVirtualizationTechnology=Enable`  
  ` `  
  `====================================`  
  `n1`  
  `====================================`  
  `@@`  
  `  Processors.ProcessorPerformanceStates=Enable`  
  `  Processors.C-States=Enable`  
  `  Processors.PackageACPIC-StateLimit=ACPI C3`  
  `- Processors.C1EnhancedMode=Enable`  
  `+ Processors.C1EnhancedMode=Disable`  
  `  Processors.Hyper-Threading=Enable`  
  `  Processors.ExecuteDisableBit=Enable`