找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 42369|回复: 9

[文本处理] 【已解决】批处理如何删除多个txt文本的第一列/首列

[复制链接]
发表于 2013-7-28 14:49:33 | 显示全部楼层 |阅读模式
现有许多txt文件需要删除第一列,求批处理。希望可以一次处理文件夹下所有的txt文件。
如果还需要删除第1、2行,还需要怎么做?
这两个要求可以做一个bat,提示是否删除第1、2行。

列与列之间可能是空格、tab或其他符号分隔。
文件格式如附件
发表于 2013-7-28 15:59:29 | 显示全部楼层
  1. sed -i -r -e "s/^[[:space:]]+//" -e "s/^[^[:space:]]+[[:space:]]+//" *.txt
复制代码
发表于 2013-7-28 17:30:16 | 显示全部楼层
纯批方案:
  1. @echo off
  2. for %%a in (*.txt) do (
  3.    (for /f "tokens=1*" %%b in ("%%a
  4. ) do echo %%c)>$
  5.    move /y $ %%a
  6. )
复制代码
gawk 方案,因为因为不内置支持输出结果到输入文件的功能,所以比 sed 麻烦点也慢点:
  1. @echo off
  2. for %%a in (*.txt) do gawk "sub($1,"")" %%a>$&move /y $ %%a
复制代码
纯 gawk 也可以构造出输出到原文件的代码,不过繁琐且很占内存,还是没有 sed 合适:
  1. gawk "{sub($1,"");text[FILENAME]=text[FILENAME] ORS $0}END{for(F i
  2. n text){print text[F] >F}}" *.txt
复制代码
 楼主| 发表于 2013-7-28 18:04:12 | 显示全部楼层
回复 2# gawk

将代码复制到txt,更给为bat运行,好像不行哦。
 楼主| 发表于 2013-7-28 18:06:42 | 显示全部楼层
回复 3# CrLf

将代码复制到txt,更给为bat运行,需要修改的txt文件里的数据全没了。
发表于 2013-7-28 18:09:09 | 显示全部楼层
回复 5# meiszp


    测试遗留的笔误已修改
    sed 和 gawk 是第三方工具,需下载到运行目录下以便调用
发表于 2013-7-28 19:02:00 | 显示全部楼层
回复 4# meiszp


    下载一个sed.exe放到C:\Windows\system32文件夹下面
 楼主| 发表于 2013-7-28 19:05:12 | 显示全部楼层
回复 6# CrLf


    谢谢!纯批方案很好。如果还要删除前两行呢,该怎么弄?最后能有选择的提示。
发表于 2013-7-28 19:07:20 | 显示全部楼层
纯批 的话 修改 tokens=1* 为 "skip=2 tokens=1*"
sed 方案


  1. @echo off
  2. set/pstr=删除 1 2 行输入y
  3. if /i "%str%" == "y"  (set str=1,2d;) else set "str="
  4. sed  -i "%str%s/^[ \t]*//;s/[^ \t]*[ \t]//" *.txt
  5. pause
复制代码
 楼主| 发表于 2013-7-28 19:09:43 | 显示全部楼层
回复 7# gawk
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:54 , Processed in 0.020467 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表