标题: [文本处理] 批处理如何替换指定位置的内容和输出指定行? [打印本页]
作者: 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 编辑
- @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
- @echo off
- setlocal enabledelayedexpansion
- set n=0
- (for /f "tokens=1-9" %%a in ('type "1.txt"') do (
- if "%%a" equ "0001" (
- set /a n+=1
- if !n! equ 1 (
- echo %%a %%b %%c %%d %%e 00 00 00 %%i
- ) else (
- echo %%a %%b %%c %%d %%e %%f %%g %%h %%i
- )
- ) else (
- echo %%a %%b %%c %%d %%e %%f %%g %%h %%i
- )
- ))>2.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |