Csvlens
Command line csv viewer
#csvlens
csvlens is a command line CSV file viewer. It is like less but made
for CSV.
#Usage
Run csvlens by providing the CSV filename:
csvlens <filename>
Pipe CSV data directly to csvlens:
<your commands producing some csv data> | csvlens
#Key bindings
| Key | Action |
|---|---|
hjkl (or ← ↓ ↑ →) |
Scroll one row or column in the given direction |
Ctrl + f (or Page Down) |
Scroll one window down |
Ctrl + b (or Page Up) |
Scroll one window up |
Ctrl + d (or d) |
Scroll half a window down |
Ctrl + u (or u) |
Scroll half a window up |
Ctrl + h |
Scroll one window left |
Ctrl + l |
Scroll one window right |
Ctrl + ← |
Scroll left to first column |
Ctrl + → |
Scroll right to last column |
Ctrl + e |
Print the marked lines to stdout and exit |
G (or End) |
Go to bottom |
g (or Home) |
Go to top |
<n>G |
Go to line n |
/<regex> |
Find content matching regex and highlight matches |
n (in Find mode) |
Jump to next result |
N (in Find mode) |
Jump to previous result |
&<regex> |
Filter rows using regex (show only matches) |
*<regex> |
Filter columns using regex (show only matches) |
TAB |
Toggle between row, column or cell selection modes |
> |
Increase selected column's width |
< |
Decrease selected column's width |
Shift + ↓ (or J) |
Sort rows or toggle sort direction by the selected column |
Ctrl + j |
Same as above, but sort by natural ordering (e.g. "file2" < "file10") |
# (in Cell mode) |
Find and highlight rows like the selected cell |
@ (in Cell mode) |
Filter rows like the selected cell |
y |
Copy the selected row or cell to clipboard |
Enter (in Cell mode) |
Print the selected cell to stdout and exit |
-S |
Toggle line wrapping |
-W |
Toggle line wrapping by words |
f<n> |
Freeze this number of columns from the left |
m |
Mark / unmark the selected row visually |
M |
Clear all row marks |
Ctrl + e |
Print the marked rows (with header) to stdout and exit |
r |
Reset to default view (clear all filters and custom column widths) |
H (or ?) |
Display help |
q |
Exit |
#Optional parameters
-
-d <char>: Use this delimiter when parsing the CSV (e.g.csvlens file.csv -d '\t').Specify
-d autoto auto-detect the delimiter. -
-t,--tab-separated: Use tab as the delimiter (when specified,-dis ignored). -
-i,--ignore-case: Ignore case when searching. This flag is ignored if any uppercase letters are present in the search string. -
--no-headers: Do not interpret the first row as headers. -
--columns <regex>: Use this regex to select columns to display by default.Example:
"column1|column2"matches"column1","column2", and also column names like"column11","column22". -
--filter <regex>: Use this regex to filter rows to display by default.The regex is matched against each cell in every column.
Example:
"value1|value2"filters rows with any cells containing"value1","value2", or text like"my_value1"or"value234". -
--find <regex>: Use this regex to find and highlight matches by default.The regex is matched against each cell in every column.
Example:
"value1|value2"highlights text in any cells containing"value1","value2", or longer text like"value1_ok". -
--echo-column <column_name>: Print the value of this column at the selected row to stdout onEnterkey and then exit. -
--prompt <prompt>: Show a custom prompt message in the status bar. Supports ANSI escape codes for colored or styled text.Example:
csvlens Pokemon.csv --prompt $'\e[1m\e[32mSelect a Pokémon!\e[0m'
-
--color-columns(or--colorful): Display each column in a different color.
#Installation
#Direct download
You can download the tar.xz or zip file matching your operating system from the
releases page, extract it and execute the csvlens
binary.
#Homebrew
For macOS, csvlens is available on Homebrew. You can
install it using:
brew install csvlens
#Arch Linux
csvlens is available in the official repositories. You can install it using:
pacman -S csvlens
#Windows
For Windows, csvlens is available on winget. You can install it using:
winget install --id YS-L.csvlens
#FreeBSD
csvlens is available as a FreeBSD pkg. You can install it using:
pkg install csvlens
#NetBSD
csvlens is available on pkgsrc. If you're using NetBSD you can install it using:
pkgin install csvlens
#OpenBSD
csvlens is available as an OpenBSD port. If you're using OpenBSD 7.6-current or later, you can install it using:
doas pkg_add csvlens
#Cargo
If you have Rust installed, csvlens is available on
crates.io and you can install it using:
cargo install csvlens
Or, build and install from source after cloning this repo:
cargo install --path $(pwd)
Requires Rust 1.88.0 or newer.
#Library Usage
This crate allows you to use csvlens as a library.
In your Cargo.toml, add the following:
[dependencies]
csvlens = { version = "0.12.0", default-features = false, features = ["clipboard"] }
#Example
Here's a simple example of how to use csvlens as a library (Documentation):
use csvlens::run_csvlens;
let out = run_csvlens(&["/path/to/your.csv"]).unwrap();
if let Some(selected_cell) = out {
println!("Selected: {}", selected_cell);
}
For more advanced usage, you can use CsvlensOptions to customize the behavior:
use csvlens::{run_csvlens_with_options, CsvlensOptions};
let options = CsvlensOptions {
filename: "/path/to/your.csv".to_string(),
delimiter: Some("|".to_string()),
ignore_case: true,
debug: true,
..Default::default()
};
let out = run_csvlens_with_options(options).unwrap();
if let Some(selected_cell) = out {
println!("Selected: {}", selected_cell);
}