我的问题和 命令行 CSV 查看器? 并且
column -s, -t
命令答案几乎是完美的 - 除了它似乎没有像我期望的那样处理空的 csv 字段。例如给定输入
col1,,col3
,col2,
产生:
col1 col3
col2
但我想要:
col1 col3
col2
是否有一个选项可以使用列命令来实现上述目标,或者有其他方法来实现这一目标? (cygwin环境)
这是离优雅最远的事情,你可能已经想到并正在寻找更好的解决方案,但我通过执行一系列 sed 替换来在空字段中放置空格来解决这个烦恼。我的 bashrc 中有这些函数...
csvcolumn() { sed -e "s/^$2/ $2/" -e "s/$2$/$2 /" -e "s/$2$2/$2 $2/g" -e "s/$2$2/$2 $2/g" $1 | column -t -s$2 ; }
csvcomma() { sed -e 's/^,/ ,/' -e 's/,$/, /' -e 's/,,/, ,/g' -e 's/,,/, ,/g' $1 | column -t -s, ; }
第一个需要两个参数才能指定分隔符。第二个是同样的事情,但它只需要一个参数,并假设分隔符是逗号,因为这是我最常用的。
csvcolumn input.csv ,
或
csvcomma input.csv
-n 选项。例如:
>$ echo -e "col1,,col3\n,col2," | column -n -s, -t
col1 col3
col2
使用 cat 和 sed。
cat filename | sed 's/[~\],/\t/g'
有一个很好的工具,叫做visidata,工作速度非常快。