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

[文本处理] 批处理如何替换指定位置的内容和输出指定行?

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 19:36 编辑
  1. @gawk "!test&&$1==1{test=$6=$7=$8=\"00\"}1" a.txt >b.txt
复制代码
下载第三方工具gawk
1

评分人数

TOP

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

回复 2# CrLf


    谢谢!不好意思,刚才文本没有写全,修改了一下。

TOP

回复 3# freesoft00


    已修改

TOP

好的,再次谢谢!
谁知道纯批处理的请帮忙写写。

TOP

  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
复制代码
1

评分人数

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表