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

[文本处理] 批处理怎样使用提取的字符替换指定字符?

[复制链接]
发表于 2019-1-8 21:50:07 | 显示全部楼层 |阅读模式
有两个文件1.txt和2.txt,对其进行注释的操作,替换时字符间的空格数保持不变。
使用findstr /v "410" 1.txt|findstr /v "^$">test.txt 可以删除KNOTV   10  410     11000 ”和空白行,
但替换不知道怎么做。求大神们帮助。

文件 1.txt
DHARM TEST
KRDMP    2 1.000E+00
NLLAG   91    1           提取9,该数值不同文件不同
NLLAG  361    2           提取36,该数值不同文件不同
KNOTV   10  410     11000    删除此行
LASTF    1     TUR
BENDE                                   删除此行,注意:下面有相同的行。
                                             删除空行
KNOTV   50         011000   不同文件此行相同,5替换为提取的9
KNOTV  230         011000  不同文件此行相同,23替换为提取的36
BENDE   
RESOP
BILDG    0    5
KNOTR  502 2302    不同文件此行相同,5替换为提取的9,23替换为提取的36
KNOTR  503 2303    不同文件此行相同,5替换为提取的9,23替换为提取的36
PLOTT    1
PENDE

文件2.txt

KNOTV  10 500    0     不同文件此行相同,50替换为1.txt提取的36
ELKRA   10  500    0    不同文件此行相同,50替换为1.txt提取的36
LASTF
BALKM   10  500    1      不同文件此行相同,50替换为1.txt提取的36
KNOTN   10  500    1      不同文件此行相同,50替换为1.txt提取的36
URSPR    1
发表于 2019-1-9 14:27:44 | 显示全部楼层
PowerShell  用法自查

  1. $Char=@(); dir [12].txt |sort | %{
  2.         ( GC $_ ) | % {
  3.                 if ( $_ -match '^NLLAG\s+(\d+)1\s+\d' ) { $Char += $matches[1] }
  4.                 if ( $_ -notmatch '^KNOTV\s+10\s+410|^BENDE|^$' ) {
  5.                         if ( $_ -like 'NLLAG*' ) { $_ } else {
  6.                         $_ -replace '230|500',"$($Char[1])0" -replace '50',"$($Char[0])0" }
  7.                 }
  8.         } | sc $($_.BaseName + '-new.txt')
  9. }
  10. cmd /c pause
复制代码
 楼主| 发表于 2019-1-9 21:09:32 | 显示全部楼层
本帖最后由 meiszp 于 2019-1-9 21:20 编辑

回复 2# xczxczxcz

谢谢解答,试一试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:12 , Processed in 0.017742 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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