标题: [文本处理] 批处理怎样使用提取的字符替换指定字符? [打印本页]
作者: meiszp 时间: 2019-1-8 21:50 标题: 批处理怎样使用提取的字符替换指定字符?
有两个文件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
作者: xczxczxcz 时间: 2019-1-9 14:27
PowerShell 用法自查- $Char=@(); dir [12].txt |sort | %{
- ( GC $_ ) | % {
- if ( $_ -match '^NLLAG\s+(\d+)1\s+\d' ) { $Char += $matches[1] }
- if ( $_ -notmatch '^KNOTV\s+10\s+410|^BENDE|^$' ) {
- if ( $_ -like 'NLLAG*' ) { $_ } else {
- $_ -replace '230|500',"$($Char[1])0" -replace '50',"$($Char[0])0" }
- }
- } | sc $($_.BaseName + '-new.txt')
- }
- cmd /c pause
复制代码
作者: meiszp 时间: 2019-1-9 21:09
本帖最后由 meiszp 于 2019-1-9 21:20 编辑
回复 2# xczxczxcz
谢谢解答,试一试。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |