wfxr / Csview
Programming Languages
Projects that are alternatives of or similar to Csview
📠csview
A high performance csv viewer with cjk/emoji support.

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
On Arch Linux
csview
is available in the Arch User Repository. To install it from AUR:
yay -S csview
On macOS
You can install csview
with Homebrew:
brew tap wfxr/csview
brew install csview
On Windows
You can install csview
with Scoop:
scoop install csview
From binaries
Pre-built 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:
- sample.csv (10000 rows, 10 cols, 624K size):
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'
- action.csv (10 rows, 4 cols, 1K size):
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.
xsv, why not contribute to it but build a new tool?
We already havexsv
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: https://github.com/BurntSushi/xsv/issues/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.