0

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

  1. 去除空字符 (\x00)
  2. 确保最后只有一个 CRLF(有时有 0、1 或更多)
  3. 将所有文件合并为一个文件。每个文件都有一个标题,但合并文件只需要一个标题。
  4. [可选:较新的 csv 有一个附加列。可以为旧文件添加新列(w 空白)吗?]

到目前为止,只有一个标题可以合并和保留:

@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"
    )
  )
)

不知道如何替换/剥离字符。

4

1 回答 1

0

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

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"
于 2013-11-09T07:51:23.593 回答