Skip to content

Latest commit

 

History

History
45 lines (38 loc) · 2.02 KB

File metadata and controls

45 lines (38 loc) · 2.02 KB

xan grep

Keep rows of a CSV file matching a given pattern. It can be thought of as
a CSV-aware version of the well-known `grep` command.

This command is faster than `xan search` because it relies on an optimized CSV
parser that only knows how to separate rows and does not care about finding cell
delimitations. But this also means this command has less features and is less
precise than `xan search` because it will try to match the given pattern on whole
rows at once, quotes & delimiters included. This is usually not an issue for coarse
filtering, but keep in mind it could be problematic for your use case.

Note also that if your CSV data has no quoting whatsoever, you really should
use `ripgrep` instead:
https://github.com/BurntSushi/ripgrep

Finally, contrary to most `xan` commands that will normalize the output to
standardish CSV data with commas and quoting using double quotes, this command
will output rows as-is, without any transformation.

Usage:
    xan grep [options] <pattern> [<input>]
    xan grep --help

grep options:
    -c, --count         Only return the number of matching rows.
    -r, --regex         Matches the given pattern as a regex.
    -i, --ignore-case   Ignore case while matching rows.
    -v, --invert-match  Only return or count rows that did not match
                        given pattern.
    --mmap              Use a memory map to speed up computations. Only
                        works if the file is on disk (no streams) and if the
                        file is uncompressed. Usually a bad idea on macOS.

Common options:
    -h, --help             Display this message
    -o, --output <file>    Write output to <file> instead of stdout.
    -n, --no-headers       When set, the first row will not be interpreted
                           as headers. Otherwise, the first row will always
                           appear in the output as the header row.
    -d, --delimiter <arg>  The field delimiter for reading CSV data.
                           Must be a single character.