{"id":47279088,"url":"https://github.com/pinelibg/rtsort","last_synced_at":"2026-04-01T23:50:58.935Z","repository":{"id":344616060,"uuid":"1180978760","full_name":"pinelibg/rtsort","owner":"pinelibg","description":"A real-time sort command","archived":false,"fork":false,"pushed_at":"2026-03-24T16:40:15.000Z","size":363,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-25T17:07:14.378Z","etag":null,"topics":["cli","command-line","rust","sort","terminal","tool"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/rtsort","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/pinelibg.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-03-13T16:07:02.000Z","updated_at":"2026-03-24T16:39:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pinelibg/rtsort","commit_stats":null,"previous_names":["pinelibg/rtsort"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/pinelibg/rtsort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinelibg%2Frtsort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinelibg%2Frtsort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinelibg%2Frtsort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinelibg%2Frtsort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pinelibg","download_url":"https://codeload.github.com/pinelibg/rtsort/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinelibg%2Frtsort/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"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","rust","sort","terminal","tool"],"created_at":"2026-03-15T21:26:18.273Z","updated_at":"2026-04-01T23:50:58.928Z","avatar_url":"https://github.com/pinelibg.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rtsort\n\nA real-time `sort` with a live terminal preview.\n\n![demo](assets/demo.gif)\n\n`rtsort` is a streaming alternative to the standard `sort` command. It displays a continuously updated preview of your sorted data as it arrives, then seamlessly writes the final output to stdout.\n\n## Features\n\n- Live terminal display updates as each line arrives\n- Alphabetical, numeric, human-readable numeric, and version number sort modes\n- Case-insensitive sorting\n- Reverse ordering\n- Limit output to the top or bottom N results\n- Deduplicate lines that compare equal under the active sort mode (like `sort -u`)\n- `--no-preview` mode for scripting without the live terminal display\n- Configurable preview update rate via `--fps`\n- Sort by a specific field with a configurable field delimiter\n\n## Install\n\n### Install with Cargo from crates.io\n\n```bash\ncargo install rtsort\n```\n\n### Download a release binary\n\nDownload the archive for your platform from the [GitHub Releases page](https://github.com/pinelibg/rtsort/releases), extract it, and place the `rtsort` binary somewhere on your `PATH`.\n\n### Install with Cargo from the repository\n\n```bash\ncargo install --git https://github.com/pinelibg/rtsort.git\n```\n\nIf your GitHub access uses SSH:\n\n```bash\ncargo install --git ssh://git@github.com/pinelibg/rtsort.git\n```\n\n### Build from a local clone\n\n```bash\ngit clone https://github.com/pinelibg/rtsort.git\ncd rtsort\ncargo install --path .\n```\n\n## Usage\n\n```\nrtsort [OPTIONS]\n\nOptions:\n  -n, --numeric-sort          Compare by string numerical value\n  -h, --human-numeric-sort    Compare by human-readable numeric values (e.g. 2K, 1G)\n  -f, --ignore-case           Fold lower case to upper case characters for comparison\n  -V, --version-sort          Sort by version numbers (e.g. 1.9 \u003c 1.10)\n  -r, --reverse               Reverse the sort order\n  -u, --unique                Remove lines that compare equal under the active sort mode\n      --top \u003cN\u003e               Output only the first N lines of the sorted result\n      --bottom \u003cN\u003e            Output only the last N lines of the sorted result\n      --no-preview            Suppress the live terminal preview (no alternate screen)\n      --fps \u003cN\u003e               Preview update rate in frames per second (default: 30; 0 = every line)\n  -k, --key \u003cN\u003e               Sort by field N (1-indexed)\n  -t, --field-separator \u003cCHAR\u003e Field delimiter character (used with -k; default: whitespace)\n      --help                  Print help\n```\n\n### Examples\n\n```bash\n# Alphabetical sort (default)\nprintf 'pear\\napple\\nbanana\\n' | rtsort\n\n# Numeric sort\nprintf '10\\n2\\n30\\n' | rtsort -n\n\n# Human-readable numeric sort\nprintf '1K\\n50\\n2M\\n' | rtsort -h\n\n# Version sort (1.9 \u003c 1.10 \u003c 2.0)\nprintf 'v1.10\\nv1.9\\nv2.0\\nv1.0\\n' | rtsort -V\n\n# Case-insensitive sort\nprintf 'banana\\nApple\\ncherry\\n' | rtsort -f\n\n# Reverse sort\nprintf 'a\\nc\\nb\\n' | rtsort -r\n\n# Show only the top 3 results\nprintf '5\\n1\\n4\\n2\\n3\\n' | rtsort -n --top 3\n\n# Show only the bottom 3 results\nprintf '5\\n1\\n4\\n2\\n3\\n' | rtsort -n --bottom 3\n\n# Remove duplicate lines\nprintf 'b\\na\\nb\\na\\n' | rtsort -u\n\n# Sort by the second whitespace-delimited field\nprintf 'foo 3\\nbar 1\\nbaz 2\\n' | rtsort -k 2\n\n# Sort by the second colon-delimited field\nprintf 'foo:3\\nbar:1\\nbaz:2\\n' | rtsort -k 2 -t ':'\n\n# Sort directories by size (human-readable)\ndu -sh */ | rtsort -h\n\n# Find the 5 largest directories\ndu -sh */ | rtsort -hr --top 5\n\n# Sort without live terminal preview (useful in scripts)\nprintf 'pear\\napple\\nbanana\\n' | rtsort --no-preview\n\n# Limit preview to 10 fps (useful on slow terminals)\nprintf 'pear\\napple\\nbanana\\n' | rtsort --fps 10\n\n# Slow preview for very long-running streams\nprintf 'pear\\napple\\nbanana\\n' | rtsort --fps 0.5\n\n# Update preview on every line (no rate limiting)\nprintf 'pear\\napple\\nbanana\\n' | rtsort --fps 0\n```\n\n## Development\n\n```bash\ncargo build\ncargo test\ncargo clippy --all-targets -- -D warnings\ncargo fmt --check\n```\n\nTo try without installing:\n\n```bash\nprintf 'pear\\napple\\nbanana\\n' | cargo run\nprintf '10\\n2\\n30\\n' | cargo run -- -n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinelibg%2Frtsort","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinelibg%2Frtsort","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinelibg%2Frtsort/lists"}