Board logo

标题: [文本处理] [己解决]指定行替换内容,求批处理代码? [打印本页]

作者: keshun    时间: 2019-3-14 00:30     标题: [己解决]指定行替换内容,求批处理代码?

本帖最后由 keshun 于 2019-3-14 13:28 编辑

1.txt
委托信息合并深度 3位小数
001 a3.571 a588.271
002 a3.570 a3,221.930
003 a3.569 a3,708.659
004 a3.568 a1,643.292
005 a3.567 a1,997.942
买入买入价委单量
006 a3.566 a1,847.859
007 a3.565 a2,520.031
008 a3.564 a2,256.898
009 a3.563 a1,268.451
010 a3.562 a819.393
011 a3.561 a391.199
012 a3.560 a3,351.776
013 a3.559 a362.588
卖出卖出价委单量
014 a3.558 a195.016
015 a3.557 a184.340
016 a3.556 a442.470
017 a3.554 a577.003

替换成:
委托aaa
001 a3.571 a588.271
002 a3.570 a3,221.930
003 a3.569 a3,708.659
004 a3.568 a1,643.292
005 a3.567 a1,997.942
买入aaa
006 a3.566 a1,847.859
007 a3.565 a2,520.031
008 a3.564 a2,256.898
009 a3.563 a1,268.451
010 a3.562 a819.393
011 a3.561 a391.199
012 a3.560 a3,351.776
013 a3.559 a362.588
卖出aaa
014 a3.558 a195.016
015 a3.557 a184.340
016 a3.556 a442.470
017 a3.554 a577.003

1.txt中第1,7,16行,每行第2个字符后面的内容,替换成aaa,求代码,谢谢!!!
作者: yhcfsr    时间: 2019-3-14 01:57

  1. @echo off
  2. rem 设置要替换的行
  3. set "spcLines=1,9,72,143,253"
  4. rem 设置替换的内容
  5. set "spcStr=aaa"
  6. rem 设置替换起始位置
  7. set "spcPos=4"
  8. (for /f "delims=" %%a in ('findstr ".*" "1.txt"') do (
  9. set/a "n+=1"
  10. set "line=%%a"
  11. setlocal enabledelayedexpansion
  12. for %%i in (!spcLines!) do if %%i equ !n! set "line=!line:~,%spcPos%!!spcStr!"
  13. echo;!line!
  14. endlocal
  15. ))>out.txt
复制代码

作者: keshun    时间: 2019-3-14 12:43

回复 2# yhcfsr


    谢谢回复,代码运行后第2行后都替换成!line!,上面我增加了原文内容,能否根据我最新原文修改下,谢谢!!!
作者: Batcher    时间: 2019-3-14 12:55

  1. sed -r "1s/(..).*/\1aaa/; 7s/(..).*/\1aaa/; 16s/(..).*/\1aaa/" 1.txt > 2.txt
复制代码

作者: Batcher    时间: 2019-3-14 12:55

  1. sed -r "/^[^0-9]/s/(..).*/\1aaa/" 1.txt > 3.txt
复制代码

作者: keshun    时间: 2019-3-14 13:29

回复 5# Batcher


    谢谢,代码完美!!!
作者: xczxczxcz    时间: 2019-3-14 19:05

本帖最后由 xczxczxcz 于 2019-3-14 19:06 编辑

这东西用PS也是很简单的
  1. (gc 1.txt) -replace '(^\D.).*','$1aaa'|sc 2.txt
复制代码





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