有人知道Linux/OS X的命令行CSV查看器吗?我在考虑一些更少的东西,但以一种更可读的方式分隔列。(我可以用OpenOffice Calc或Excel打开它,但这对于我需要查看的数据来说太强大了。)有水平和垂直滚动会很棒。
当前回答
这里有一个(可能太)简单的选择:
sed "s/,/\t/g" filename.csv | less
其他回答
使用TxtSushi您可以做到:
csvtopretty filename.csv | less -S
可以在全局安装nodejs包tecfu/tty-table,这样做:
apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table
它还可以处理流。
要了解更多信息,请参阅终端使用的文档。
我用pisswillis的答案用了很长时间。
csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}
但后来结合了一些我在http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line上找到的更适合我的代码:
csview()
{
local file="$1"
cat "$file" | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S
}
对我来说,它工作得更好的原因是它能更好地处理宽列。
你也可以用这个:
column -s, -t < somefile.csv | less -#2 -N -S
Column是一个标准的Unix程序,非常方便——它可以找到每列的适当宽度,并将文本显示为格式良好的表格。
注意:无论何时有空字段,都需要在其中放置某种占位符,否则该列将与后面的列合并。下面的例子演示了如何使用sed插入一个占位符:
$ cat data.csv
1,2,3,4,5
1,,,,5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1 2 3 4 5
1 5
$ cat data.csv
1,2,3,4,5
1,,,,5
$ column -s, -t < data.csv
1 2 3 4 5
1 5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1 2 3 4 5
1 5
注意,对,,,的替换做了两次。如果只做一次,1…4将变成1,,,4,因为第二个逗号已经匹配了。
Tabview:轻量级的python curses命令行CSV文件查看器(以及其他表格式python数据,如列表中的列表)在Github上
特点:
Python 2.7+, 3.x Unicode support Spreadsheet-like view for easily visualizing tabular data Vim-like navigation (h,j,k,l, g(top), G(bottom), 12G goto line 12, m - mark, ' - goto mark, etc.) Toggle persistent header row Dynamically resize column widths and gap Sort ascending or descending by any column. 'Natural' order sort for numeric values. Full-text search, n and p to cycle between search results 'Enter' to view the full cell contents Yank cell contents to clipboard F1 or ? for keybindings Can also use from python command line to visualize any tabular data (e.g. list-of-lists)
推荐文章
- Python csv字符串到数组
- 我怎么能得到'查找'忽略。svn目录?
- Linux相当于Mac OS X的“open”命令
- 如何在Mac上的命令行安装JQ ?
- 在Mac OS X上安装/升级gradle
- 如何在终端中提高光标速度?
- 如何在Linux中循环目录?
- 在命令行中使用Firefox截取完整页面的截图
- 在pip install -U中“-U”选项代表什么
- Objective-C中的自动引用计数不能防止或减少什么样的泄漏?
- 如何将参数转发到bash脚本中的其他命令?
- 如何确定一个进程是否运行在lxc/Docker内部?
- 仅在文件不存在时才将行追加到文件中
- 如何强制makefile重新构建目标?
- 如何在父进程退出后使子进程死亡?