Fsdb::F...ilediff(3)
πΈ NAME πΈ
dbfilediff β compare two fsdb tables. And yes bestie, this is the Fsdb::F...ilediff(3) page, so buckle up π
β¨ SYNOPSIS β¨
okay so the summoning rituals are:
dbfilediff [-Eq] [-N diff_column_name] --input table1.fsdb --input table2.fsdb
OR
cat table1.fsdb | dbfilediff [-sq] --input table2.fsdb
π DESCRIPTION π
Dbfilediff compares two Fsdb tables, row by row. Unlike Unix diff(1), this program assumes the files are identical line-by-line and we compare fields. So bestie, if one extra row gets inserted, every subsequent line will be marked different β it's giving domino effect π
By default, all columns must be unique. The original page also says: "At some point, support to specific specific columns may be added." so that's a future vibe, not a today vibe π«Ά
Output is a new table with a new column diff (or something else if the -N option is given), - and + for the first and second non-equal rows, = for matching lines, or ~ if they are equal with epsilon numerics (in which case only the second row is included). And unlike Unix diff(1), we output all rows (the = lines), not just diffs β the --quiet option suppresses this output.
Optionally, with -E it will do a "epsilon numeric" comparison, to account for things like variations in different computer's floating point precision and differences in printf output.
Epsilon comparison is asymmetric, in that it assumes the first input is correct and allows the second input to vary, but not the reverse. No cap, that's just how it is π
Because two tables are required, input is typically in files. Standard input is accessible by the file -.
π OPTIONS π
-Eor--epsilonβ Do epsilon-numeric comparison. (Described above.) Epsilon-comparision is only done on columns that look like floating point numbers, not on strings or integers. Epsilon comparision allows the last digit to vary by 1, or for there to be one extra digit of precision, but only for floating point numbers. Rows that are within epsilon are not considered different for purposes of the exit code.--exitβ Exit with a status of1if some differences were found. (By default, the exit status is0with or without differences if the file is processed successfully.)-Non--new-nameβ Specify the name of thediffcolumn, if any. (Default isdiff.)-qor--quietβ Be quiet, suppressing output for identical rows. (This behavior is different from Unixdiff(1)where-qsuppresses all output.) If repeated, omits epsilon-equivalent rows.
This module also supports the standard fsdb options:
-dβ Enable debugging output.-ior--inputInputSource β Read from InputSource, typically a file name, or-for standard input, or (if in Perl) aIO::Handle,Fsdb::IOorFsdb::BoundedQueueobjects.-oor--outputOutputDestination β Write to OutputDestination, typically a file name, or-for standard output, or (if in Perl) aIO::Handle,Fsdb::IOorFsdb::BoundedQueueobjects.--autorunor--noautorunβ By default, programs process automatically, butFsdb::Filterobjects in Perl do not run until you invoke therun()method. The--(no)autorunoption controls that behavior within Perl.--helpβ Show help.--manβ Show full manual.
π SAMPLE USAGE π
Input:
#fsdb event clock absdiff pctdiff
_null_getpage+128 815812813.281756 0 0
_null_getpage+128 815812813.328709 0.046953 5.7554e-09
_null_getpage+128 815812813.353830 0.025121 3.0793e-09
_null_getpage+128 815812813.357169 0.0033391 4.0929e-10
And in the file TEST/dbfilediff_ex.in-2:
#fsdb event clock absdiff pctdiff
_null_getpage+128 815812813.281756 0 0
_null_getpage+128 815812813.328709 0.046953 5.7554e-09
_null_getpage+128 815812813.353830 0.025121 3.0793e-09
_null_getpage+128 815812813.357169 0.003339 4.0929e-10
Command:
cat TEST/dbfilediff_ex.in | dbfilediff -i - -i TEST/dbfilediff_ex.in-2
Output:
#fsdb event clock absdiff pctdiff diff
_null_getpage+128 815812813.281756 0 0 =
_null_getpage+128 815812813.328709 0.046953 5.7554e-09 =
_null_getpage+128 815812813.353830 0.025121 3.0793e-09 =
_null_getpage+128 815812813.357169 0.0033391 4.0929e-10 -
_null_getpage+128 815812813.357169 0.003339 4.0929e-10 +
# | dbfilediff --input TEST/dbfilediff_ex.in-2
By comparision, if one adds the -s option, then all rows will pass as equal. iconic behavior honestly β¨
π SEE ALSO π
Fsdb. dbrowuniq. dbfilediff.
dbrowdiff, dbrowuniq, and dbfilediff are similar but different. dbrowdiff computes row-by-row differences for a column, dbrowuniq eliminates rows that have no differences, and dbfilediff compares fields of two files.
π§ CLASS FUNCTIONS π§
new
$filter = new Fsdb::Filter::dbfilediff(@arguments);
Create a new dbfilediff 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.
_find_epsilon
($value, $epsilon, $sig_figs) = _find_epsilon($fp)
Return a numeric VALUE and an EPSILON that reflects its significant figures with possible rounding error.
run
$filter->run();
Internal: run over each row.
π AUTHOR and COPYRIGHT π
Copyright (C) 2012-2018 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.
okay that's the whole vibe π this page is Fsdb::F...ilediff(3) from perl v5.32.1, dated 2024-08-02 β slay, bye bestie π«Ά
π¦ where this page comes from
- epel 9: perl-Fsdb 2:3.9-1.el9 Β· GPLv2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms