csv-to-usv

Crates.iocsv-to-usv
lib.rscsv-to-usv
version1.5.4
sourcesrc
created_at2024-03-09 13:45:38.444054
updated_at2024-04-11 19:02:36.92508
descriptionCVS to USV: Convert Comma Separated Values (CSV) to Unicode Separated Values (USV) for data markup, including for spreadsheets, databases, text files, and more.
homepage
repositoryhttps://github.com/sixarm/csv-to-usv-rust-crate/
max_upload_size
id1167828
size55,359
Joel Parker Henderson (joelparkerhenderson)

documentation

README

csv-to-usv

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

Options for CSV parsing:

  • -d, --delimiter : Set the CSV field delimiter character.

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

Install:

cargo install csv-to-usv

Link: https://crates.io/crates/csv-to-usv

Example

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}

FAQ

What converters are available?

When to use this command?

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.

Why use USV instead of CSV?

See the documentation for USV.

Is USV aiming to become a standard?

Yes, USV is submitted to IETF.org as an Internet-Draft work in progress: link.

Can I build my own USV tools?

Yes, and you may freely use the USV RFC and USV Rust crate.

Help wanted

Constructive feedback welcome. Pull requests and feature requests welcome.

Tracking

  • Package: csv-to-usv-rust-crate
  • Version: 1.5.4
  • Created: 2024-03-09T13:33:20Z
  • Updated: 2024-04-11T18:17:04Z
  • License: MIT or Apache-2.0 or GPL-2.0 or GPL-3.0 or contact us for more
  • Contact: Joel Parker Henderson (joel@sixarm.com)
Commit count: 34

cargo fmt