ZSV(1)
β¨ ZSV(1) β¨
okay bestie, welcome to zsv β the tabular data swiss-army knife π
it's a user command in section 1 of the manual (iykyk), and honestly? she's iconic.
πΈ NAME πΈ
zsv β tabular data swiss-army knife π
π¦ DESCRIPTION π¦
zsv is a fast and extensible CLI utility for CSV data. she gets that speed using SIMD operations, efficient memory use, and other optimization techniques. no cap.
and that's not even all of it β she can also parse generic-delimited and fixed-width formats, plus multi-row-span headers. versatile queen π
π USAGE π
here's how you talk to her:
zsv version
display version info (and if applicable, extension info) π
zsv (un)register [<extension_id>]
(un)register an extension
registration info is saved in zsv.ini, which lives in a directory determined like this: the ZSV_CONFIG_DIR environment variable value, if that's set; otherwise, /usr/local/etc. periodt π
zsv help [<command>]
zsv <command> <options> <arguments>
run a command on data (details below, bestie, keep scrolling π)
zsv <id>-<cmd> <options> <arguments>
invoke command cmd of extension id
zsv license [<extension_id>]
zsv thirdparty
view third-party licenses & acknowledgements π«Ά
π Options common to all commands except prop, rm and jq: π
heads up bestie:prop,rmandjqdo NOT get these. everyone else does. π
-L,--limit-rows <n>β limit processing to the given number of rows (and yes, that count includes any header row(s))-c,--max-column-count <n>β set the maximum number of columns parsed per row. defaults to1024-r,--max-row-size <n>β set the minimum supported maximum row size. defaults to64k-B,--buff-size <n>β set internal buffer size. defaults to256k-t,--tab-delimβ set column delimiter to tab-O,--other-delim <char>β set column delimiter to the specified character-q,--no-quoteβ turn off quote handling-R,--skip-head <n>β skip the specified number of initial rows-d,--header-row-span <n>β apply header depth (rowspan) of n-u,--malformed-utf8-replacement <string>β replacement string (can be empty!) in case of malformed UTF8 input (default for thedesccommand is'?')-S,--keep-blank-headersβ disable the default behavior of ignoring leading blank rows-0,--header-row <header>β insert the provided CSV as the first row (in position 0), e.g.--header-row 'col1,col2,"my col 3"'-1,--apply-overwritesβ automatically apply overwrites saved via theoverwritecommand-v,--verboseβ verbose output
π Commands that parse CSV or other tabular data: π
selectβ extract rows/columns by name or position and perform other basic and 'cleanup' operationsechoβ write tabular input to stdout with optional cell overwritesoverwriteβ save, modify or apply overwritessqlβ run ad-hoc SQLcountβ print the number of rowsdescβ describe each columnprettyβ pretty print for console display β¨flattenβ flatten a table consisting of N groups of data, each with 1 or more rows in the table, into a table of N rows2jsonβ convert CSV or sqlite3 db table to json2tsvβ convert to tab-delimited textserializeβ convert into 3-column format (id, column name, cell value)stackβ stack tables vertically, aligning columns with common namescompareβ compare two or more tables and output differences
π Other commands: π
2dbβ convert json to sqlite3 dbpropβ save parsing options associated with a file that are subsequently applied by default when processing that filermβ remove a file and its related cachemvβ rename (move) a file and/or its related cachejqβ run a jq filter on json input
π MAINTAINER π
Liquidaty <https://github.com/liquidaty/zsv> π«Ά
β LICENSE β
MIT License
okay that's the whole vibe check bestie π this page is for zsv version 1.3.0, dated February 2026, and it's living in the manual as ZSV(1). go parse something iconic, you got this ππ¦
π¦ where this page comes from
- ubuntu stonking: zsv 1.3.0-4 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms