NAME
  bloom - utility to work with Bloom filters

SYNOPSIS
  bloom [global options] command [command options] [arguments...]

DESCRIPTION

  This is the main tool to interact with Bloom filters, e.g. to create, fill and
  query them.

BASIC USAGE

  To create a new Bloom filter with a desired capacity and false positive
  probability, you can use `create`:

    #will create a gzipped Bloom filter with 100.000 capacity and a 0.1 % false positive probability
    bloom --gzip create -p 0.001 -n 100000 test.bloom.gz

  To insert values, you can use the insert command and pipe some input to it
  (each line will be treated as one value):

    cat values | bloom --gzip insert test.bloom.gz

  You can also interactively add values to the filter by specifying the
  --interactive option:

    bloom --gzip --interactive insert test.bloom.gz

  To check if a given value or a list of values is in the filter, you can use
  `check`:

    cat values | bloom --gzip check test.bloom.gz

  This will return a list of all values in the filter.

ADVANCED USAGE

  Sometimes it is useful to attach additional information to a string that we
  want to check against the Bloom filter, such as a timestamp or the original
  line content. To make passing along this additional information easier within
  a shell context, the Bloom tool provides an option for splitting the input
  string by a given delimiter and checking the filter against the resulting
  field values.

    # will check the Bloom filter for the values foo, bar and baz
    cat "foo,bar,baz" | bloom -s filter.bloom

    # uses a different delimiter (--magic-delimiter--)
    cat "foo--ac5ba--bar--ac5ba--baz" | bloom  -d "--ac5ba--" -s filter.bloom

    # will check the Bloom filter against the second field value only
    cat "foo,bar,baz" | bloom -f 1 -s filter.bloom

    # will check the Bloom filter against the second and third field values only
    cat "foo,bar,baz" | bloom -f 1,2 -s filter.bloom

    # will print one line for each field value that matched against the filter
    cat "foo,bar,baz" | bloom -e -s filter.bloom

    # will print the last field value for each line whose fields matched against the filter
    cat "foo,bar,baz" | bloom -e -s --pf -1 filter.bloom

  This functionality is especially handy when using CSV data, as it allows you
  to filter CSV rows by checking individual columns against the filter without
  having to use external tools to split and reassemble the lines.

COMMANDS

  * create       Create a new Bloom filter and store it in the given file.
  * insert       Inserts new values into an existing Bloom filter.
  * join, merge  Joins two Bloom filters into one.
  * check        Checks values against an existing Bloom filter.
  * set-data     Sets the data associated with the Bloom filter.
  * get-data     Prints the data associated with the Bloom filter.
  * show         Shows various details about a given Bloom filter.
  * help         Shows a list of commands or help for one command


OPTIONS

--gzip, --gz                      compress bloom file with gzip
--interactive, -i                 interactively add values to the filter
--split, -s                       split the input string
--each, -e                        print each match of a split string individually
--delimiter value, -d value       delimiter to use for splitting (default: ",")
--fields value, -f value          fields of split output to use in filter (a single number or a comma-separated list of numbers, zero-indexed)
--print-fields value, --pf value  fields of split output to print for a successful match (a single number or a comma-separated list of numbers, zero-indexed).
--help, -h                        show help
--version, -v                     print the version
