1Fsdb::Filter::dbsort(3)User Contributed Perl DocumentatioFnsdb::Filter::dbsort(3)
2
3
4

NAME

6       dbsort - sort rows based on the the specified columns
7

SYNOPSIS

9           dbsort [-M MemLimit] [-T TemporaryDirectory] [-nNrR] column [column...]
10

DESCRIPTION

12       Sort all input rows as specified by the numeric or lexical columns.
13
14       Dbsort consumes a fixed amount of memory regardless of input size.  (It
15       reverts to temporary files on disk if necessary, based on the -M and -T
16       options.)
17
18       The sort should be stable, but this has not yet been verified.
19
20       For large inputs (those that spill to disk), dbsort will do some of the
21       merging in parallel, if possible.  The --parallel option can control
22       the degree of parallelism, if desired.
23

OPTIONS

25       General option:
26
27       -M MaxMemBytes
28           Specify an approximate limit on memory usage (in bytes).  Larger
29           values allow faster sorting because more operations happen in-
30           memory, provided you have enough memory.
31
32       -T TmpDir
33           where to put tmp files.  Also uses environment variable TMPDIR, if
34           -T is not specified.  Default is /tmp.
35
36       --parallelism N or -j N
37           Allow up to N merges to happen in parallel.  Default is the number
38           of CPUs in the machine.
39
40       Sort specification options (can be interspersed with column names):
41
42       -r or --descending
43           sort in reverse order (high to low)
44
45       -R or --ascending
46           sort in normal order (low to high)
47
48       -n or --numeric
49           sort numerically
50
51       -N or --lexical
52           sort lexicographically
53
54       This module also supports the standard fsdb options:
55
56       -d  Enable debugging output.
57
58       -i or --input InputSource
59           Read from InputSource, typically a file name, or "-" for standard
60           input, or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue
61           objects.
62
63       -o or --output OutputDestination
64           Write to OutputDestination, typically a file name, or "-" for
65           standard output, or (if in Perl) a IO::Handle, Fsdb::IO or
66           Fsdb::BoundedQueue objects.
67
68       --autorun or --noautorun
69           By default, programs process automatically, but Fsdb::Filter
70           objects in Perl do not run until you invoke the run() method.  The
71           "--(no)autorun" option controls that behavior within Perl.
72
73       --header H
74           Use H as the full Fsdb header, rather than reading a header from
75           then input.
76
77       --help
78           Show help.
79
80       --man
81           Show full manual.
82

SAMPLE USAGE

84   Input:
85           #fsdb cid cname
86           10 pascal
87           11 numanal
88           12 os
89
90   Command:
91           cat data.fsdb | dbsort cname
92
93   Output:
94           #fsdb      cid     cname
95           11 numanal
96           12 os
97           10 pascal
98           #  | dbsort cname
99

SEE ALSO

101       dbmerge(1), dbmapreduce(1), Fsdb(3)
102

CLASS FUNCTIONS

104   new
105           $filter = new Fsdb::Filter::dbsort(@arguments);
106
107       Create a new object, taking command-line arguments.
108
109   set_defaults
110           $filter->set_defaults();
111
112       Internal: set up defaults.
113
114   parse_options
115           $filter->parse_options(@ARGV);
116
117       Internal: parse command-line arguments.
118
119   setup
120           $filter->setup();
121
122       Internal: setup, parse headers.
123
124   segment_start
125           $self->segment_start(\@rows);
126
127       Sorting happens internally, to handle large things in pieces if
128       necessary.
129
130       call "$self-"segment_start> to init things and to restart after an
131       overflow "$self-"segment_overflow> to close one segment and start the
132       next, and "$self-"segment_merge_finish> to put them back together
133       again.
134
135       Note that we don't invoke the merge code unless the data exceeds some
136       threshold size, so small sorts happen completely in memory.
137
138       Once we give up on memory, all the merging happens by making passes
139       over the disk files.
140
141   segment_next_output
142           $out = $self->segment_next_output($input_finished)
143
144       Internal: return a Fsdb::IO::Writer as $OUT that either points to our
145       output or a temporary file, depending on how things are going.
146
147   segment_overflow
148           $self->segment_overflow(\@rows, $input_finished)
149
150       Called to sort @ROWS, writing them to the appropriate place.
151       $INPUT_FINISHED is set if all input has been read.
152
153   segment_merge_start
154           $self->segment_merge_start($fn);
155
156       Start merging on file $FN.  Fork off a merge thread, if necessary.
157
158   segment_merge_finish
159           $self->segment_merge_finish();
160
161       Merge queued files, if any.  Just call dbmerge(1) to do all the real
162       work.
163
164   run
165           $filter->run();
166
167       Internal: run over each rows.
168
170       Copyright (C) 1991-2018 by John Heidemann <johnh@isi.edu>
171
172       This program is distributed under terms of the GNU general public
173       license, version 2.  See the file COPYING with the distribution for
174       details.
175
176
177
178perl v5.34.0                      2021-07-22           Fsdb::Filter::dbsort(3)
Impressum