{"id":46048623,"url":"https://github.com/wang-q/tva","last_synced_at":"2026-04-05T14:02:28.675Z","repository":{"id":340367488,"uuid":"1164090059","full_name":"wang-q/tva","owner":"wang-q","description":"tva: Tab-separated Values Assistant","archived":false,"fork":false,"pushed_at":"2026-04-03T21:54:08.000Z","size":10617,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-03T23:26:12.813Z","etag":null,"topics":["cli","command-line-tool","csv","data-analysis","data-processing","etl","high-performance","rust","streaming","tabular-data","tsv","unix-philosophy"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wang-q.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-22T16:16:46.000Z","updated_at":"2026-04-03T21:54:05.000Z","dependencies_parsed_at":"2026-03-15T20:06:39.128Z","dependency_job_id":null,"html_url":"https://github.com/wang-q/tva","commit_stats":null,"previous_names":["wang-q/tva"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/wang-q/tva","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wang-q%2Ftva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wang-q%2Ftva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wang-q%2Ftva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wang-q%2Ftva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wang-q","download_url":"https://codeload.github.com/wang-q/tva/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wang-q%2Ftva/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31437927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line-tool","csv","data-analysis","data-processing","etl","high-performance","rust","streaming","tabular-data","tsv","unix-philosophy"],"created_at":"2026-03-01T08:08:19.334Z","updated_at":"2026-04-05T14:02:28.670Z","avatar_url":"https://github.com/wang-q.png","language":"Rust","readme":"# tva: Tab-separated Values Assistant\n\nFast, reliable TSV processing toolkit in Rust.\n\n[![Build](https://github.com/wang-q/tva/actions/workflows/build.yml/badge.svg)](https://github.com/wang-q/tva/actions)\n[![codecov](https://img.shields.io/codecov/c/github/wang-q/tva/master)](https://app.codecov.io/gh/wang-q/tva/tree/master)\n[![Crates.io](https://img.shields.io/crates/v/tva.svg)](https://crates.io/crates/tva)\n[![license](https://img.shields.io/github/license/wang-q/tva)](https://github.com/wang-q/tva)\n[![Documentation](https://img.shields.io/badge/docs-online-blue)](https://wang-q.github.io/tva/)\n\n## Overview\n\n`tva` (pronounced \"Tee-Va\") is a high-performance command-line toolkit written in **Rust** for\nprocessing tabular data. It brings the safety and speed of modern systems programming to the classic\nUnix philosophy.\n\n**Inspiration**\n\n* [eBay's tsv-utils](https://github.com/eBay/tsv-utils) (discontinued): The primary reference for\n  functionality and performance.\n* [GNU Datamash](https://www.gnu.org/software/datamash/): Statistical operations.\n* [R's tidyverse](https://tidyr.tidyverse.org/): Reshaping concepts and string manipulation.\n* [xan](https://github.com/medialab/xan): DSL and terminal-based plotting.\n\n**Use Cases**\n\n* **\"Middle Data\"**: Files too large for Excel/Pandas but too small for distributed systems (\n  Spark/Hadoop).\n* **Data Pipelines**: Robust CLI-based ETL steps compatible with `awk`, `sort`, etc.\n* **Exploration**: Fast summary statistics, sampling, and filtering on raw data.\n\n**Design Principles**\n\n* **Single Binary**: A standalone executable with no dependencies, easy to deploy.\n* **Header Aware**: Manipulate columns by name or index.\n* **Fail-fast**: Strict validation ensures data integrity (no silent truncation).\n* **Streaming**: Stateless processing designed for infinite streams and large files.\n* **TSV-first**: Prioritizes the reliability and simplicity of tab-separated values.\n* **Performance**: Single-pass execution with minimal memory overhead.\n\n**[Read the documentation online](https://wang-q.github.io/tva/)**\n\n## Installation\n\nCurrent release: 0.3.2\n\n```bash\n# Clone the repository and install via cargo\ncargo install --force --path .\n```\n\nOr install the pre-compiled binary via the cross-platform package\nmanager [cbp](https://github.com/wang-q/cbp) (supports older Linux systems with glibc 2.17+):\n\n```bash\ncbp install tva\n```\n\nYou can also download the pre-compiled binaries from\nthe [Releases](https://github.com/wang-q/tva/releases) page.\n\n## Running Examples\n\nThe examples in the documentation use sample data located in the `docs/data/` directory. To run\nthese examples yourself, we recommend cloning the repository:\n\n```bash\ngit clone https://github.com/wang-q/tva.git\ncd tva\n```\n\nThen you can run the commands exactly as shown in the docs (e.g.,\n`tva select -f 1 docs/data/input.csv`).\n\nAlternatively, you can download individual files from\nthe [docs/data](https://github.com/wang-q/tva/tree/master/docs/data) directory on GitHub.\n\n## Commands\n\n### [Subset Selection](docs/selection.md)\n\nSelect specific rows or columns from your data.\n\n- **`select`**: Select and reorder columns.\n- **`filter`**: Filter rows based on numeric, string, or regex conditions.\n- **`slice`**: Slice rows by index (keep or drop). Supports multiple ranges and header preservation.\n- **`sample`**: Randomly sample rows (Bernoulli, reservoir, weighted).\n\n### [Data Transformation](docs/transformation.md)\n\nTransform the structure or values of your data.\n\n- **`longer`**: Reshape wide to long (unpivot). Requires a header row.\n- **`wider`**: Reshape long to wide (pivot). Supports aggregation via `--op` (sum, count, etc.).\n- **`fill`**: Fill missing values in selected columns (down/LOCF, const).\n- **`blank`**: Replace consecutive identical values in selected columns with empty strings (\n  sparsify).\n- **`transpose`**: Swaps rows and columns (matrix transposition).\n\n### [Expr Language](docs/expr.md)\n\nExpression-based transformations for complex data manipulation.\n\n- **`expr`**: Evaluate expressions and output results.\n- **`extend`**: Add new columns to each row (alias for `expr -m extend`).\n- **`mutate`**: Modify existing column values (alias for `expr -m mutate`).\n\n### [Data Organization](docs/organization.md)\n\nOrganize and combine multiple datasets.\n\n- **`sort`**: Sorts rows based on one or more key fields.\n- **`reverse`**: Reverses the order of lines (like `tac`), optionally keeping the header at the top.\n- **`join`**: Join two files based on common keys.\n- **`append`**: Concatenate multiple TSV files, handling headers correctly.\n- **`split`**: Split a file into multiple files (by size, key, or random).\n\n### [Statistics \u0026 Summary](docs/statistics.md)\n\nCalculate statistics and summarize your data.\n\n- **`stats`**: Calculate summary statistics (sum, mean, median, min, max, etc.) with grouping.\n- **`bin`**: Discretize numeric values into bins (useful for histograms).\n- **`uniq`**: Deduplicate rows or count unique occurrences (supports equivalence classes).\n\n### [Visualization](docs/plot.md)\n\nVisualize your data in the terminal.\n\n- **`plot point`**: Draw scatter plots or line charts in the terminal.\n- **`plot box`**: Draw box plots (box-and-whisker plots) in the terminal.\n- **`plot bin2d`**: Draw 2D histograms/heatmaps in the terminal.\n\n### [Formatting \u0026 Utilities](docs/utilities.md)\n\nFormat and validate your data.\n\n- **`check`**: Validate TSV file structure (column counts, encoding).\n- **`nl`**: Add line numbers to rows.\n- **`keep-header`**: Run a shell command on the body of a TSV file, preserving the header.\n\n### Import \u0026 Export\n\nConvert data to and from TSV format.\n\n- **[`from`](docs/from.md)**: Convert other formats to TSV (`csv`, `xlsx`, `html`).\n- **[`to`](docs/to.md)**: Convert TSV to other formats (`csv`, `xlsx`, `md`).\n\n## Author\n\nQiang Wang \u003cwang-q@outlook.com\u003e\n\n## License\n\nMIT.\nCopyright by Qiang Wang.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwang-q%2Ftva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwang-q%2Ftva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwang-q%2Ftva/lists"}