CSV处理 - 删除一些字符并组合文件

时间:2013-11-09 04:43:50

标签: windows-7 batch-file cmd csv

我在一个文件夹中有几十个CSV文件。我需要:

  1. 删除空字符(\ x00)
  2. 确保最后只有一个CRLF(有时有0,1或更多)
  3. 将所有文件合并到一个文件中。每个文件都有一个标题,但只需要一个标题用于组合文件。
  4. [可选:较新的csv有一个额外的列。可以为旧文件添加新列(w空白)吗?]
  5. 到目前为止,只有一个标题组合并保留:

    @echo off
    setlocal
    set first=1
    set fileName="combined.csv"
    >%fileName% (
      for %%F in (*.csv) do (
        if not "%%F"==%fileName% (
          if defined first (
            type "%%F"
            set "first="
          ) else more +1 "%%F"
        )
      )
    )
    

    不知道如何替换/删除字符。

1 个答案:

答案 0 :(得分:0)

这可能会使用GnuSED。在复制期间将CRLF添加到每个文件的末尾后,Sed会删除空字符和所有额外的空白行。

More在每个文件中有64K行的错误会暂停,如果这是一个问题,它还会将TAB转换为空格。

@echo off
setlocal
set first=1
>"combined.bin" (
for %%F in (*.csv) do (
    if defined first (
        type "%%F"
        set "first="
      ) else (
     more +1 "%%F"
    )
   echo(
  )
)
sed -e "/^$/"d -e "s/\x00//g" < "combined.bin" > "combined.csv"
del "combined.bin"