标题: [文本处理] 求助bat脚本如何从二行开始删除含DAT文本的行? [打印本页]
作者: jonn 时间: 2021-7-16 22:09 标题: 求助bat脚本如何从二行开始删除含DAT文本的行?
我要处理一百多个csv文件,格式一样,每一个csv文件中都有表头行,
通过bat将一百多个csv合并为一个成N2021.csv,
N2021.csv里面有一百多个表头,会影响后面的文件处理。
如何处理N2021.csv文件,从第二行开始判断含DAT行,删除整行?最终结果是保留第一行的表头
以下bat是删除整个N2021.csv 所有含DAT的行,但是连第一行也删除- @echo off&setlocal enabledelayedexpansion
- findstr /v /r /c:"DAT" "N2021.csv">$
- move $ "N2021.csv"&
复制代码
作者: newswan 时间: 2021-7-17 00:18
不用任何技术的办法,把表头保存到一个文件,把其他文件的表头删除,再把表头加上
作者: newswan 时间: 2021-7-17 00:21
本帖最后由 newswan 于 2021-7-17 00:22 编辑
- sed -r -e "1! { /DAT/d }" -i N2021.txt
复制代码
作者: jonn 时间: 2021-7-17 00:51
回复 3# newswan
没成功。 我现在的方法是全删表头,然后用bat在第一行加入新表头。因为文件有点大,将近四百兆,插入新表头比较耗时,要三分钟。
作者: went 时间: 2021-7-17 01:31
在你原先的代码上修改,添加一行- @echo off&setlocal enabledelayedexpansion
- set /p "head="<"N2021.csv"
- echo %head%>$
- findstr /v /r /c:"DAT" "N2021.csv">>$
- move $ "N2021.csv"
- pause&exit
复制代码
作者: newswan 时间: 2021-7-17 03:00
本帖最后由 newswan 于 2021-7-17 10:11 编辑
回复 4# jonn
没有sed?论坛有下载
对于很大的文本,用 unix 工具性能最好:awk grep sed
作者: qixiaobin0715 时间: 2021-7-17 08:52
本帖最后由 qixiaobin0715 于 2021-7-17 08:56 编辑
回复 4# jonn
能否换个思路,合并文件时屏蔽各个文件的表头,同时在合并文件中第一行加上表头(test.csv为被合并文件中的任意一个文件):- @echo off
- set /p head=<test.csv
- (echo,%head%
- for /f "delims=" %%i in ('dir /b a-d *.csv') do (
- for /f "usebackq skip=1 delims=" %%a in ("%%i") do echo,%%a
- ))>N2021.csv
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |