我的问题与Command line CSV viewer?相同,并且column -s, -t
命令答案几乎是完美的-除了它似乎没有像我预期的那样处理空的 csv 字段。例如给定的输入
col1,,col3
,col2,
produces:
col1 col3
col2
但我想:
col1 col3
col2
是否有一个选项来实现上述列命令或替代方法来实现这一点?(cygwin 环境)
这是优雅的最远的东西,它可能是你已经想到的,并正在寻找一个更好的解决方案,但我通过做一系列的 sed 替换来解决这个烦恼,在空字段中放一个空格。
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, ; }
第一个需要两个 args 才能指定分隔符字符。第二个是同样的事情,但它只需要一个 arg,并假设分隔符是一个逗号,因为这是我最常用的。
csvcolumn input.csv ,
或
csvcomma input.csv
-n 选项存在于 Debian 中。例如:
>$ echo -e "col1,,col3\n,col2," | column -n -s, -t
col1 col3
col2
使用 cat 和 sed。
cat filename | sed 's/[~\],/\t/g'
如果你是一个 vimmer,使用CSV plugin,这是 juuustbeautiful。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(74条)