Linux 命令行CSV查看器
我的问题和你的一样 而且Linux 命令行CSV查看器,linux,command-line,csv,cygwin,Linux,Command Line,Csv,Cygwin,我的问题和你的一样 而且column-s,-t命令的答案几乎是完美的——除了它似乎不像我所期望的那样处理空的csv字段。给定输入 col1,,col3 ,col2, 产生: col1 col3 col2 但我想: col1 col3 col2 是否有一个选项可以通过column命令实现上述功能,或者有一种替代方法来实现此功能?(cygwin环境)使用cat和sed cat filename | sed 's/[~\],/\t/g' 使用cat和sed cat fil
column-s,-t
命令的答案几乎是完美的——除了它似乎不像我所期望的那样处理空的csv字段。给定输入
col1,,col3
,col2,
产生:
col1 col3
col2
但我想:
col1 col3
col2
是否有一个选项可以通过column命令实现上述功能,或者有一种替代方法来实现此功能?(cygwin环境)使用cat和sed
cat filename | sed 's/[~\],/\t/g'
使用cat和sed
cat filename | sed 's/[~\],/\t/g'
这与优雅相去甚远,这可能是您已经想到并正在寻找更好的解决方案,但我通过执行一系列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, ; }
第一个需要两个参数才能指定分隔符。第二个是相同的东西,但它只需要一个arg,并假设分隔符是逗号,因为我通常使用逗号
csvcolumn input.csv ,
或
这与优雅相去甚远,这可能是您已经想到并正在寻找更好的解决方案,但我通过执行一系列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, ; }
第一个需要两个参数才能指定分隔符。第二个是相同的东西,但它只需要一个arg,并假设分隔符是逗号,因为我通常使用逗号
csvcolumn input.csv ,
或
如果你是vimmer,使用juuust 如果你是vimmer,使用juuust -n选项存在于debian中。e、 g:
>$ echo -e "col1,,col3\n,col2," | column -n -s, -t
col1 col3
col2
-n选项存在于debian中。e、 g:
>$ echo -e "col1,,col3\n,col2," | column -n -s, -t
col1 col3
col2
这与给出的示例不匹配(
echo col1,col3 | sed's/[~\],/\t/g'
仍然输出col1,col3
)。如果内容宽度不同,用制表符替换会导致列排列不正确。这与给出的示例不匹配(echo col1,col3 | sed's/[~\],/\t/g'
仍然输出col1,col3
)如果内容宽度不同,用制表符替换会导致列排列不正确。是的,你是对的,我也在想同样的事情,但它奏效了。是的,你是对的,我也在想同样的事情,但它奏效了。