【问题标题】:CSV processing - strip some chars and combine filesCSV 处理 - 去除一些字符并合并文件
【发布时间】:2013-11-09 04:43:50
【问题描述】:

我在一个文件夹中有几十个 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"
    )
  )
)

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

【问题讨论】:

    标签: windows-7 batch-file cmd csv


    【解决方案1】:

    这可以使用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"
    

    【讨论】:

      猜你喜欢
      • 2020-05-08
      • 1970-01-01
      • 2014-03-31
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多