BUFR_COMPARE(1)

πŸ’– NAME πŸ’–

okay bestie, so this is bufr_compare β€” the manual page for bufr_compare. she lives in User Commands, section 1, and she is so good at her job πŸ’…


✨ DESCRIPTION ✨

first things first, the ✨NAME✨ of it all:

bufr_compare

...and now the actual ✨DESCRIPTION✨:

So picture this: you've got BUFR messages sitting in two different files, and you need to know if they're the same. That's her. She compares them. And if she finds differences? She fails and returns an error code β€” no pretending everything's cute πŸ’€

Floating-point values get compared exactly by default. But if you wanna loosen the vibe, you can define different tolerances (peep -A and -R for that 🫢).

Default behaviour, write it on your hand: absolute error=0, bit-by-bit compare, same order in files. That's the baseline, periodt 🌸


πŸ¦‹ USAGE πŸ¦‹

bufr_compare [options] bufr_file1 bufr_file2

πŸ’… OPTIONS πŸ’…

  • -b key,key,... β€” every key in this list gets skipped in the comparison. Bit-by-bit compare on.
  • -d β€” writes the different messages out on files.
  • -2 β€” enables two-way comparison (both directions, she's thorough like that πŸ‘‘).
  • -c key[:i|d|s|n],key[:i|d|s|n],... β€” only the listed keys or namespaces (:n) are compared. That optional letter after the colon forces the type in the comparison: i->integer, d->float, s->string, n->namespace. See the -a option. Incompatible with -H β€” those two are not friends, do not invite them to the same party.
  • -S start β€” first field to be processed.
  • -E end β€” last field to be processed.
  • -a β€” a -c modifier. The keys listed with -c get added to the list of keys compared without -c.
  • -H β€” compares only message headers. Bit-by-bit compare on. Incompatible with -c.
  • -R key1=relative_error1,key2=relative_error2,... β€” compares floating-point values using the relative error as tolerance. key1=relative_error1 compares key1 using relative_error1. all=relative_error compares all the floating-point keys using relative_error. Default is all=0.
  • -A absolute error β€” compares floating-point values using the absolute error as tolerance. Default is absolute error=0.
  • -t factor β€” compares data values using factor multiplied by the tolerance you specified in -R and -A.
  • -w key[:{s|d|i}]{=|!=}value,key[:{s|d|i}]{=|!=}value,... β€” the where clause ✨ Messages are processed only if they match all the key/value constraints. A valid constraint is key=value or key!=value. For each key you can specify a string (key:s), a double (key:d) or an integer (key:i) type. Default type is string. In the value you can also use the forward-slash character / to specify an OR condition (i.e. a logical disjunction).
Note: only one -w clause is allowed. one. single. clause. 😭
  • -f β€” forcefully compare, do not stop after the first difference.
  • -V β€” print version.
  • -7 β€” does not fail when the message has wrong length.
  • -v β€” verbose.
  • -h β€” display this help text and exit.

πŸ”₯ SEE ALSO πŸ”₯

Full documentation and examples at:

https://confluence.ecmwf.int/display/ECC/bufr_compare


okay so. story time πŸ“ this manpage is that girl and she said the whole thing twice. same sections, same order, zero shame. so here's the encore, bestie β€” nothing skipped, nothing summarised πŸ’€


🌸 NAME 🌸

bufr_compare


🌸 DESCRIPTION 🌸

Compare the BUFR messages contained in two files. If some differences are found, it fails and returns an error code. Floating-point values are compared exactly by default, and different tolerances can be defined (see -A and -R). Default behaviour: absolute error=0, bit-by-bit compare, same order in files.


🌸 USAGE 🌸

bufr_compare [options] bufr_file1 bufr_file2

🌸 OPTIONS 🌸

  • -b key,key,... β€” all the keys in this list are skipped in the comparison. Bit-by-bit compare on.
  • -d β€” write different messages on files.
  • -2 β€” enable two-way comparison.
  • -c key[:i|d|s|n],key[:i|d|s|n],... β€” only the listed keys or namespaces (:n) are compared. The optional letter after the colon is used to force the type in the comparison: i->integer, d->float, s->string, n->namespace. See the -a option. Incompatible with the -H option.
  • -S start β€” first field to be processed.
  • -E end β€” last field to be processed.
  • -a β€” -c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.
  • -H β€” compare only message headers. Bit-by-bit compare on. Incompatible with the -c option.
  • -R key1=relative_error1,key2=relative_error2,... β€” compare floating-point values using the relative error as tolerance. key1=relative_error1 will compare key1 using relative_error1. all=relative_error will compare all the floating-point keys using relative_error. Default all=0.
  • -A absolute error β€” compare floating-point values using the absolute error as tolerance. Default is absolute error=0.
  • -t factor β€” compare data values using factor multiplied by the tolerance specified in options -R -A.
  • -w key[:{s|d|i}]{=|!=}value,key[:{s|d|i}]{=|!=}value,... β€” where clause. Messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s), a double (key:d) or an integer (key:i) type can be specified. Default type is string. In the value you can also use the forward-slash character / to specify an OR condition (i.e. a logical disjunction).
Note: only one -w clause is allowed.
  • -f β€” forcefully compare, do not stop after first difference.
  • -V β€” print version.
  • -7 β€” does not fail when the message has wrong length.
  • -v β€” verbose.
  • -h β€” display this help text and exit.

🌸 SEE ALSO 🌸

Full documentation and examples at:

https://confluence.ecmwf.int/display/ECC/bufr_compare


and that's the whole page, bestie, we made it 🫢 source and version is just her name, bufr_compare, dated October 2026, filed under manual page BUFR_COMPARE(1). iconic. no notes. byeee πŸ’–βœ¨

πŸ“¦ where this page comes from