Crates.io | csv-to-usv |
lib.rs | csv-to-usv |
version | 1.5.4 |
source | src |
created_at | 2024-03-09 13:45:38.444054 |
updated_at | 2024-04-11 19:02:36.92508 |
description | CVS to USV: Convert Comma Separated Values (CSV) to Unicode Separated Values (USV) for data markup, including for spreadsheets, databases, text files, and more. |
homepage | |
repository | https://github.com/sixarm/csv-to-usv-rust-crate/ |
max_upload_size | |
id | 1167828 |
size | 55,359 |
Convert Comma Separated Values (CSV) to Unicode Separated Values (USV). Built with the USV Rust crate.
Syntax:
stdin | csv-to-usv [options] | stdout
Example:
cat example.csv | csv-to-usv
Example with output to a file:
cat example.csv | csv-to-usv > example.usv
More examples below.
Options for CSV parsing:
Options for USV separators and modifiers:
-u, --unit-separator : Set the unit separator (US) string.
-r, --record-separator : Set the record separator (RS) string.
-g, --group-separator : Set the group separator (GS) string.
-f, --file-separator : Set the file separator (FS) string.
-e, --escape : Set the escape (ESC) string.
-z, --end-of-transmission : Set the end of transmission (EOT) string.
Options for USV style:
--style-braces : Set the style to use braces, such as "{US}" for Unit Separator.
--style-controls : Set the style to use controls, such as "\u001F" for Unit Separator.
--style-symbols : Set the style to use symbols, such as "␟" for Unit Separator.
Options for USV layout:
--layout-0: Show each item with no line around it. This is no layout, in other words one long line.
--layout-1: Show each item with one line around it. This is like single-space lines for long form text.
--layout-2: Show each item with two lines around it. This is like double-space lines for long form text.
--layout-units: Show each unit on one line. This can be helpful for line-oriented tools.
--layout-records: Show each record on one line. This is like a typical spreadsheet sheet export.
--layout-groups: Show each group on one line. This can be helpful for folio-oriented tools.
--layout-files: Show one file on one line. This can be helpful for archive-oriented tools.
Options for command line tools:
-h, --help : Print help
-V, --version : Print version
-v, --verbose... : Set the verbosity level: 0=none, 1=error, 2=warn, 3=info, 4=debug, 5=trace. Example: --verbose …
--test : Print test output for debugging, verifying, tracing, and the like. Example: --test
Install:
cargo install csv-to-usv
Link: https://crates.io/crates/csv-to-usv
CSV and USV have similar data concepts:
CSV | USV |
---|---|
Cell / Col | Unit |
Line / Row | Record |
- | Group |
- | File |
Suppose file example.csv contains:
a,b
c,d
Run:
cat example.csv | csv-to-usv
Output:
a␟b␟␞
c␟d␟␞
If you prefer ASCII Separated Values (ASV) with zero-width character controls:
Run:
cat example.csv | csv-to-usv --style-controls
Output:
a\u001Fb\u001F\u001E
c\u001Fd\u001F\u001E
If you prefer to render markers with braces, to see the markers more easily:
cat example.csv | csv-to-usv --style-braces
Output:
a{US}b{US}{RS}
c{US}d{US}{RS}
Use this command when you want to convert from CSV to USV.
A typical use case is when you have CSV data, such as a spreadsheet export, and you want to convert it to USV, such as to make the data easier to view, or edit, or maintain.
Our real-world use case is converting a bunch of CSV spreadsheet exports from a variety of programs, including Excel, to USV so we're better-able to handle quoting, and multi-line data units, and Unicode characters in a wide variety of human languages.
See the documentation for USV.
Yes, USV is submitted to IETF.org as an Internet-Draft work in progress: link.
Yes, and you may freely use the USV RFC and USV Rust crate.
Constructive feedback welcome. Pull requests and feature requests welcome.