[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

现有许多txt文件需要删除第一列,求批处理。希望可以一次处理文件夹下所有的txt文件。
如果还需要删除第1、2行,还需要怎么做?
这两个要求可以做一个bat,提示是否删除第1、2行。

列与列之间可能是空格、tab或其他符号分隔。
文件格式如附件

回复 7# gawk
谢谢!

TOP

纯批 的话 修改 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
复制代码

TOP

回复 6# CrLf


    谢谢!纯批方案很好。如果还要删除前两行呢,该怎么弄?最后能有选择的提示。

TOP

回复 4# meiszp


    下载一个sed.exe放到C:\Windows\system32文件夹下面
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 5# meiszp


    测试遗留的笔误已修改
    sed 和 gawk 是第三方工具,需下载到运行目录下以便调用

TOP

回复 3# CrLf

将代码复制到txt,更给为bat运行,需要修改的txt文件里的数据全没了。

TOP

回复 2# gawk

将代码复制到txt,更给为bat运行,好像不行哦。

TOP

纯批方案:
  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
复制代码

TOP

  1. sed -i -r -e "s/^[[:space:]]+//" -e "s/^[^[:space:]]+[[:space:]]+//" *.txt
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表