NAME
dbcoluniqcount - count rows with identicial fields
SYNOPSIS
dbrowuniq [-FLB] [uniquifying fields...]
DESCRIPTION
Count number rows grouped by each value of field (or fields). Equivalent to the Fsdb dbrowuniq command with -c, but does not require the lines to be adjacent.
Unlike dbrowuniq, we do not require rows to be adajcent. By default we the number of unique rows is small and we cache them in memory, running quickly (O(n) time). Optionally in the future we will give up and fall back on external sorting, but this feature is not yet implemented.
As with dbroquniq, by default, dbcoluniqcount outputs the first unique row. Optionally, with -L, it will output the last unique row, or with -B it outputs both first and last. (This choice only matters when uniqueness is determined by specific fields.)
Incremental counting, when the count column already exists, is possible with -I. With incremental counting, the existing count column is summed.
OPTIONS
- -c or --count
-
Create a new column (count) which counts the number of times each line occurred.
The new column is named by the
-Nargument, defaulting tocount. - -N on --new-name
-
Specify the name of the count column, if any. Please specify the type with the name, if desired (allowing one to pick sizes smaller than the default quad, if desired). (Default is
count:q.) - -I on --incremental
-
Incremental counting. If the count column exists, it is assumed to have a partial count and the count accumulates. If the count column doesn't exist, it is created.
- -L or --last
-
Output the last unique row only. By default, it outputs the first unique row.
- -F or --first
-
Output the first unique row only. (This output is the default.)
- -B or --both
-
Output both the first and last unique rows.
This module also supports the standard fsdb options:
- -d
-
Enable debugging output.
- -i or --input InputSource
-
Read from InputSource, typically a file name, or
-for standard input, or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue objects. - -o or --output OutputDestination
-
Write to OutputDestination, typically a file name, or
-for standard output, or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue objects. - --autorun or --noautorun
-
By default, programs process automatically, but Fsdb::Filter objects in Perl do not run until you invoke the run() method. The
--(no)autorunoption controls that behavior within Perl. - --header H
-
Use H as the full Fsdb header, rather than reading a header from then input.
- --help
-
Show help.
- --man
-
Show full manual.
SAMPLE USAGE
Input:
#fsdb event
_null_getpage+128
_null_getpage+128
_null_getpage+128
_null_getpage+4
_null_getpage+4
_null_getpage+4
_null_getpage+128
_null_getpage+128
_null_getpage+128
_null_getpage+4
_null_getpage+4
_null_getpage+4
# | /home/johnh/BIN/DB/dbcol event
# | /home/johnh/BIN/DB/dbsort event
Command:
cat data.fsdb | dbrowuniq -c
Output:
#fsdb event count
_null_getpage+128 6
_null_getpage+4 6
# 2 /home/johnh/BIN/DB/dbcol event
# | /home/johnh/BIN/DB/dbcoluniqcount
SAMPLE USAGE 2
Retaining the last unique row as an example.
Input:
#fsdb event i
_null_getpage+128 10
_null_getpage+128 11
_null_getpage+128 12
_null_getpage+4 16
_null_getpage+4 17
_null_getpage+4 18
_null_getpage+128 13
_null_getpage+128 14
_null_getpage+128 15
_null_getpage+4 19
_null_getpage+4 20
_null_getpage+4 21
# | /home/johnh/BIN/DB/dbcol event
# | /home/johnh/BIN/DB/dbsort event
Command:
cat data.fsdb | dbrowuniq -c -L event
Output:
#fsdb event i count
_null_getpage+128 15 6
_null_getpage+4 21 6
# | /home/johnh/BIN/DB/dbcol event
# | /home/johnh/BIN/DB/dbsort event
# | dbcoluniqcount -L event
SEE ALSO
CLASS FUNCTIONS
new
$filter = new Fsdb::Filter::dbrowuniq(@arguments);
Create a new dbrowuniq object, taking command-line arguments.
set_defaults
$filter->set_defaults();
Internal: set up defaults.
parse_options
$filter->parse_options(@ARGV);
Internal: parse command-line arguments.
setup
$filter->setup();
Internal: setup, parse headers.
run
$filter->run();
Internal: run over each rows.
AUTHOR and COPYRIGHT
Copyright (C) 1997-2025 by John Heidemann <johnh@isi.edu>
This program is distributed under terms of the GNU general public license, version 2. See the file COPYING with the distribution for details.