[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何实现从文本指定位置到文本指定位置的替换?

如何实现把同目录下a.txt的第3行的第1到8个字符替换掉b.txt的第2行第34到第41个字符,谢谢!
a.txt:
  1. REPLACE(ARGVALUE,'-','')                                                        
  2. --------------------------------------------------------------------------------
  3. 20140530
复制代码
b.txt:
  1. load data
  2. infile "E:\XINHANETL\source\8033_20140529_CUSTOMER.txt"
  3. truncate
  4. into table etl.mid_customer
  5. fields terminated by ","optionally enclosed by '"'
  6. (BRANCH_ID,
  7.   BASE_DATE,
  8.   FULL_NAME,
  9.   ID_TYPE,
  10.   ID_NO,
  11.   CIF_NO,
  12.   NATIONALITY,
  13.   CIF_TYPE,
  14.   TEL_NO,
  15.   ADDRESS,
  16.   CONTACT_METHOD,
  17.   CIF_CLASSIFIED,
  18.   CAPITAL_AMT,
  19.   CEO_NAME,
  20.   CEO_ID_TYPE,
  21.   CEO_ID_NO,
  22.   OPEN_ORGAN,
  23.   OPEN_DATE,
  24.   CLOSE_DATE,
  25.   CUST_TYPE,
  26.   CO_TEL_NO,
  27.   CO_FAX_NO,
  28.   CO_RESIDENT_CODE,
  29.   CO_INDUSTRY_CODE,
  30.   COMPANY_SIZE,
  31.   CO_SP_ZONE_YN,
  32.   TAX_CODE,
  33.   INVEST_NATION_ID,
  34.   CO_EMAIL_ADDRESS,
  35.   CO_DECLARATION,
  36.   RE_EMAIL_ADDRESS,
  37.   INF_LAST_CORC_BUSS_DT)
复制代码
就是想把b.txt里的路径换下,谢谢。

回复 11# Batcher


    谢谢您,问题解决了

TOP

回复 10# 116247215


    看过了。你现在执行5楼的代码,报错信息是什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


    您看下8楼,您写的这个不是这么实现的吧

TOP

回复 7# 116247215


可能是你的sed版本问题,试试这个:
http://pan.baidu.com/share/link?shareid=452449&uk=1124163200
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

想要实现的是b.txt变为
  1. load data
  2. infile "E:\XINHANETL\source\8033_20140530_CUSTOMER.txt"
  3. truncate
  4. into table etl.mid_customer
  5. fields terminated by ","optionally enclosed by '"'
  6. (BRANCH_ID,
  7.   BASE_DATE,
  8.   FULL_NAME,
  9.   ID_TYPE,
  10.   ID_NO,
  11.   CIF_NO,
  12.   NATIONALITY,
  13.   CIF_TYPE,
  14.   TEL_NO,
  15.   ADDRESS,
  16.   CONTACT_METHOD,
  17.   CIF_CLASSIFIED,
  18.   CAPITAL_AMT,
  19.   CEO_NAME,
  20.   CEO_ID_TYPE,
  21.   CEO_ID_NO,
  22.   OPEN_ORGAN,
  23.   OPEN_DATE,
  24.   CLOSE_DATE,
  25.   CUST_TYPE,
  26.   CO_TEL_NO,
  27.   CO_FAX_NO,
  28.   CO_RESIDENT_CODE,
  29.   CO_INDUSTRY_CODE,
  30.   COMPANY_SIZE,
  31.   CO_SP_ZONE_YN,
  32.   TAX_CODE,
  33.   INVEST_NATION_ID,
  34.   CO_EMAIL_ADDRESS,
  35.   CO_DECLARATION,
  36.   RE_EMAIL_ADDRESS,
  37.   INF_LAST_CORC_BUSS_DT)
复制代码

TOP

sed: Unknown option -r
Usage: sed [-n] script [file...]
       sed [-nE] [-e script] [-f scriptfile] [file...]
sed: Unknown option -r
Usage: sed [-n] script [file...]
       sed [-nE] [-e script] [-f scriptfile] [file...]
Batcher ,能再帮我看看吗?PowerShell ,也谢谢您,只是我不会用那个,只想用bat

TOP

Batcher ,您写的这个为什么没有用啊,a_new.txt没有东西

TOP

  1. @echo off
  2. for /f %%i in ('sed -r "2!d; s/.{33}(.{8}).*/\1/" b.txt') do set n=%%i
  3. sed -r "3s/.{8}/%n%/" a.txt > a_new.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

powershell 代码
  1. cd   a:\pscode\116247215    # 这里改成进入目标目录
  2. $源字符数组 = $(Get-Content  .\a.txt)[2].tochararray()
  3. $目标文件 = Get-Content  .\b.txt   -ReadCount  0
  4. $目标第二行数组 = $目标文件[1].tochararray()
  5. $新目标第二行 = "" + $目标第二行数组[0..32] + $源字符数组[0..7] + $目标第二行数组[41..$目标第二行数组.length]
  6. echo $新目标第二行
  7. $目标文件[1] = $新目标第二行
  8. $输出文件名 = '.\b.txt' + '.txt'
  9. Out-File  -LiteralPath $输出文件名  -Encoding unicode  -InputObject $目标文件
复制代码
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

教教吧,工作急用

TOP

有人教教吗?

TOP

返回列表