Board logo

标题: [文本处理] 【已解决】批处理如何替换/修改文本中指定位置的字符? [打印本页]

作者: popelrain    时间: 2016-5-19 00:23     标题: 【已解决】批处理如何替换/修改文本中指定位置的字符?

本帖最后由 popelrain 于 2016-5-19 21:10 编辑

ABTC     10  CM  JMK     2     -20.348
ABTC     11  CO  JMK     2     -20.569
ABTC     12  C    JMK     3     -20.742
ABTC     13  CF  ABC     3     -20.575
ABTC     14  CA  ABC     3     -20.769
ABTC     15  CF  YUC     4     -20.525
ABTC     16  CA  YUC     4     -20.729

文本里很多行这样的数据,
1、我想在JMK、ABC和YUC后面加上一列字母A,A前面有1个空格。
2、变完后每行的字符数和之前还是一样的,相当于字母A只是替换了JMK、ABC和YUC后面的第2个空格。

变成:
ABTC     10  CM  JMK A  2     -20.348
ABTC     11  CO  JMK A  2     -20.569
ABTC     12  C    JMK A  3     -20.742
ABTC     13  CF  ABC A  3     -20.575
ABTC     14  CA  ABC A  3     -20.769
ABTC     15  CF  YUC A  4     -20.525
ABTC     16  CA  YUC A  4     -20.729

这个如何通过批处理实现的,请教大神!
作者: gawk    时间: 2016-5-19 08:20

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('type "1.txt"') do (
  4.     set "OldStr=%%i"
  5.     set "NewStr=!OldStr:~0,20! A !OldStr:~23!"
  6.     echo !NewStr!
  7. ))>2.txt
复制代码

作者: pcl_test    时间: 2016-5-19 08:29

举个栗子
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('more +7 "%~f0"') do (
  3. set "str=%%a"
  4. for %%b in (JMK ABC YUC) do set "str=!str: %%b  = %%b A!"
  5. echo;!str!
  6. )
  7. pause
  8. ABTC     12  C    JMK     3     -20.742
  9. ABTC     13  CF  ABC     3     -20.575
  10. ABTC     16  CA  YUC     4     -20.729
复制代码

作者: popelrain    时间: 2016-5-19 21:08

回复 2# gawk

大神!膜拜!谢谢!!
作者: popelrain    时间: 2016-5-19 21:09

回复 3# pcl_test


  非常感谢!
作者: popelrain    时间: 2016-5-19 21:10

问题已解决!谢谢各位!




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