Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ csview Public

📠 Pretty and fast csv viewer for cli with cjk/emoji support.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

wfxr/csview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📠 csview

A high performance csv viewer with cjk/emoji support.

CICD License Version Platform

Features

  • Small and fast (see benchmarks below).
  • Correctly handles CJK characters and emoji.
  • Support different styles.
  • Support tsv and custom delimiters.
  • Able to generate markdown table (with --style markdown option).

Usage

$ cat example.csv
Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00

$ csview example.csv
+------+-------+----------------------------------------+------------------------+---------+
| Year | Make | Model | Description | Price |
+------+-------+----------------------------------------+------------------------+---------+
| 1997 | Ford  | E350                                   | ac, abs, moon          | 3000.00 |
| 1999 | Chevy | Venture "Extended Edition"             |                        | 4900.00 |
| 1999 | Chevy | Venture "Extended Edition, Very Large" |                        | 5000.00 |
| 1996 | Jeep  | Grand Cherokee                         | MUST SELL!             | 4799.00 |
|      |       |                                        | air, moon roof, loaded |         |
+------+-------+----------------------------------------+------------------------+---------+

$ head -n10 /etc/passwd | csview --no-headers -d:
+------------------------+---+-------+-------+----------------------------+-----------------+
| root                   | x | 0     | 0     |                            | /root           |
| bin                    | x | 1     | 1     |                            | /               |
| daemon                 | x | 2     | 2     |                            | /               |
| mail                   | x | 8     | 12    |                            | /var/spool/mail |
| ftp                    | x | 14    | 11    |                            | /srv/ftp        |
| http                   | x | 33    | 33    |                            | /srv/http       |
| nobody                 | x | 65534 | 65534 | Nobody                     | /               |
| dbus                   | x | 81    | 81    | System Message Bus         | /               |
| systemd-journal-remote | x | 982   | 982   | systemd Journal Remote     | /               |
| systemd-network        | x | 981   | 981   | systemd Network Management | /               |
+------------------------+---+-------+-------+----------------------------+-----------------+

Run csview --help to view detailed usage.

Installation

From binaries

Prebuilt versions of csview for various architectures are available at Github release page.

Note that you can try the musl version (which is statically-linked) if runs into dependency related errors.

From source

csview is also published on crates.io. If you have Rust toolchains (1.40 or above) installed you can use cargo to install it from source:

cargo install --locked csview

If you want the latest version, clone this repository and run cargo build --release.

Benchmark

Compared with csvlook provided by csvkit:

Benchmark #1: csvlook sample.csv
  Time (mean ± σ):      4.010 s ±  0.100 s    [User: 3.945 s, System: 0.051 s]
  Range (min … max):    3.911 s …  4.249 s    10 runs

Benchmark #2: csview sample.csv
  Time (mean ± σ):      46.5 ms ±   2.3 ms    [User: 39.7 ms, System: 6.5 ms]
  Range (min … max):    44.0 ms …  59.4 ms    59 runs

Summary
  'csview sample.csv' ran
   86.32 ± 4.83 times faster than 'csvlook sample.csv'
Benchmark #1: csvlook action.csv
  Time (mean ± σ):     316.5 ms ±   5.2 ms    [User: 284.8 ms, System: 35.0 ms]
  Range (min … max):   309.3 ms … 326.2 ms    10 runs

Benchmark #2: csview action.csv
  Time (mean ± σ):       0.7 ms ±   0.2 ms    [User: 0.8 ms, System: 0.7 ms]
  Range (min … max):     0.4 ms …   1.6 ms    933 runs

Summary
  'csview action.csv' ran
  461.25 ± 109.34 times faster than 'csvlook action.csv'

F.A.Q.


We already have xsv, why not contribute to it but build a new tool?

xsv is an awesome csv tookit. It's aimed for analyzing and manipulating csv data. csview is designed for formatting and viewing. Their relationship is like awk and column.

The author of xsv may have the similar views with me: BurntSushi/xsv#156


Things look weird if the width of table is more than the width of terminal window.

Use pager less with -S option: csview a.csv | less -S so you can scroll screen horizontally. Or use xsv to filter out the columns you don't care then piped to csview.


I encountered UTF-8 related errors, how to solve it?

The file may use a non-UTF8 encoding. You can check the file encoding using file command:

$ file -i a.csv
a.csv: application/csv; charset=iso-8859-1

And then convert it to utf8:

$ iconv -f iso-8859-1 -t UTF8//TRANSLIT a.csv -o b.csv
$ csview b.csv

Or do it in place:

$ iconv -f iso-8859-1 -t UTF8//TRANSLIT a.csv | csview

Credits

License

csview is distributed under the terms of both the MIT License and the Apache License 2.0.

See the LICENSE-APACHE and LICENSE-MIT files for license details.

About

📠 Pretty and fast csv viewer for cli with cjk/emoji support.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages