0

我正在寻找可以将我的 bcp 文件转换为 csv 文件的任何已知工具或脚本。

输入 bcp 文件格式:

  1. 由“XXXXXXX”分隔的字段
  2. 由 'YYYYYY' 分隔的行
  3. 字段包含特殊字符,如 CRLF、CR、LF、"、制表符、逗号等...

我想要的输出格式:

  1. 用逗号分隔的标准 csv 格式文件
  2. 字段值应包含包含特殊字符的原始内容(我的意思是不添加或删除特殊字符,CR也不应删除)
  3. 该文件能够按列索引/名称剪切以选择感兴趣的列。

为此,我做了以下事情:

  1. 使用少量 sed 命令将 bcp 文件转换为 csv,这样我可以在 MS excel 程序中以正确对齐方式打开文件,并且可以看到内容没有改变(如预期的那样)。

    sed -i 's/\"/\"\"/g' $inFile

    sed -i 's/XXXXXXX/","/g' $inFile

    sed -i 's/YYYYYYY/"\n"/g' $inFile

    sed -i '1s/^/\"/' $inFile

    sed -i '$s/\"//' $inFile

    sed -i -e '${/^$/d}' $inFile

    sed -i '1s/^/"Header","added","here"\n/' $inFile

  2. 尝试过 csvkit 工具:csvcut $infile 此工具正在选择首选列,但会修改内容,例如删除 CR。

这种转换有什么想法吗?

4

1 回答 1

-1

awk救援!

awk -F='XXXXXXX' -v RS='YYYYYYY' -v OFS='","' -v ORS='\n' 
                  '{gsub(/"/,"\""); $1=$1; print "\""$0"\""}' file

转义引号,引用字段,将字段分隔符更改为逗号并将记录分隔符更改为换行符。$1=$1强制 awk 应用新的分隔符。

于 2016-05-03T21:04:35.417 回答