标题: [文本处理] 【已解决】批处理如何删除多个txt文本的第一列/首列 [打印本页]
作者: meiszp 时间: 2013-7-28 14:49 标题: 【已解决】批处理如何删除多个txt文本的第一列/首列
现有许多txt文件需要删除第一列,求批处理。希望可以一次处理文件夹下所有的txt文件。
如果还需要删除第1、2行,还需要怎么做?
这两个要求可以做一个bat,提示是否删除第1、2行。
列与列之间可能是空格、tab或其他符号分隔。
文件格式如附件
作者: gawk 时间: 2013-7-28 15:59
- sed -i -r -e "s/^[[:space:]]+//" -e "s/^[^[:space:]]+[[:space:]]+//" *.txt
复制代码
作者: CrLf 时间: 2013-7-28 17:30
纯批方案:- @echo off
- for %%a in (*.txt) do (
- (for /f "tokens=1*" %%b in ("%%a
- ) do echo %%c)>$
- move /y $ %%a
- )
复制代码
gawk 方案,因为因为不内置支持输出结果到输入文件的功能,所以比 sed 麻烦点也慢点:- @echo off
- for %%a in (*.txt) do gawk "sub($1,\"\")" %%a>$&move /y $ %%a
复制代码
纯 gawk 也可以构造出输出到原文件的代码,不过繁琐且很占内存,还是没有 sed 合适:- gawk "{sub($1,\"\");text[FILENAME]=text[FILENAME] ORS $0}END{for(F i
- n text){print text[F] >F}}" *.txt
复制代码
作者: meiszp 时间: 2013-7-28 18:04
回复 2# gawk
将代码复制到txt,更给为bat运行,好像不行哦。
作者: meiszp 时间: 2013-7-28 18:06
回复 3# CrLf
将代码复制到txt,更给为bat运行,需要修改的txt文件里的数据全没了。
作者: CrLf 时间: 2013-7-28 18:09
回复 5# meiszp
测试遗留的笔误已修改
sed 和 gawk 是第三方工具,需下载到运行目录下以便调用
作者: gawk 时间: 2013-7-28 19:02
回复 4# meiszp
下载一个sed.exe放到C:\Windows\system32文件夹下面
作者: meiszp 时间: 2013-7-28 19:05
回复 6# CrLf
谢谢!纯批方案很好。如果还要删除前两行呢,该怎么弄?最后能有选择的提示。
作者: terse 时间: 2013-7-28 19:07
纯批 的话 修改 tokens=1* 为 "skip=2 tokens=1*"
sed 方案- @echo off
- set/pstr=删除 1 2 行输入y
- if /i "%str%" == "y" (set str=1,2d;) else set "str="
- sed -i "%str%s/^[ \t]*//;s/[^ \t]*[ \t]//" *.txt
- pause
复制代码
作者: meiszp 时间: 2013-7-28 19:09
回复 7# gawk
谢谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |