Board logo

标题: [文本处理] 批处理如何替换指定位置的内容和输出指定行? [打印本页]

作者: freesoft00    时间: 2016-1-28 18:17     标题: 批处理如何替换指定位置的内容和输出指定行?

0000  11 22 33 44 55 66 77  ffsdfasd
0001  22 11 22 33 44 55 00  33333333
0002  11 11 11 11 11 11 11  66666666
......
0000 33 33 33 33 33 33 33  44444444
0001 22 11 22 33 44 55 66  ...............
0002 33 44 55 66 77 88 99  !!!!!!!!!!!!!!
......

文本内容如上,比如我想显示第一列为0001的行的内容,比如只显示第一个出现的行的内容(后面有重复的不显示,也可以设定显示第二个出现的),并且把0001这一行后面的最后三组数字替换为00,就是44 55 00更改为00 00 00,(这个44 55 00内容是可变的,但是在行中的位置是不变的,就是不一定是44 55 00可能是其它数字都替换为00 00 00)比如这个文件是1.txt,直接修改这个文件也可以,生成新的文件也可以,文档中的其它内容不动。
作者: CrLf    时间: 2016-1-28 18:57

本帖最后由 CrLf 于 2016-1-28 19:36 编辑
  1. @gawk "!test&&$1==1{test=$6=$7=$8=\"00\"}1" a.txt >b.txt
复制代码
下载第三方工具gawk
作者: freesoft00    时间: 2016-1-28 19:05

本帖最后由 freesoft00 于 2016-1-28 19:08 编辑

回复 2# CrLf


    谢谢!不好意思,刚才文本没有写全,修改了一下。
作者: CrLf    时间: 2016-1-28 19:36

回复 3# freesoft00


    已修改
作者: freesoft00    时间: 2016-1-28 19:41

好的,再次谢谢!
谁知道纯批处理的请帮忙写写。
作者: gawk    时间: 2016-1-28 20:24

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. (for /f "tokens=1-9" %%a in ('type "1.txt"') do (
  5.     if "%%a" equ "0001" (
  6.         set /a n+=1
  7.         if !n! equ 1 (
  8.             echo %%a %%b %%c %%d %%e 00 00 00 %%i
  9.         ) else (
  10.             echo %%a %%b %%c %%d %%e %%f %%g %%h %%i
  11.         )
  12.     ) else (
  13.         echo %%a %%b %%c %%d %%e %%f %%g %%h %%i
  14.     )
  15. ))>2.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2