标题: [文本处理] 批处理如何实现从文本指定位置到文本指定位置的替换? [打印本页]
作者: 116247215 时间: 2014-6-5 15:01 标题: 批处理如何实现从文本指定位置到文本指定位置的替换?
如何实现把同目录下a.txt的第3行的第1到8个字符替换掉b.txt的第2行第34到第41个字符,谢谢!
a.txt:- REPLACE(ARGVALUE,'-','')
- --------------------------------------------------------------------------------
- 20140530
复制代码
b.txt:- load data
- infile "E:\XINHANETL\source\8033_20140529_CUSTOMER.txt"
- truncate
- into table etl.mid_customer
- fields terminated by ","optionally enclosed by '"'
- (BRANCH_ID,
- BASE_DATE,
- FULL_NAME,
- ID_TYPE,
- ID_NO,
- CIF_NO,
- NATIONALITY,
- CIF_TYPE,
- TEL_NO,
- ADDRESS,
- CONTACT_METHOD,
- CIF_CLASSIFIED,
- CAPITAL_AMT,
- CEO_NAME,
- CEO_ID_TYPE,
- CEO_ID_NO,
- OPEN_ORGAN,
- OPEN_DATE,
- CLOSE_DATE,
- CUST_TYPE,
- CO_TEL_NO,
- CO_FAX_NO,
- CO_RESIDENT_CODE,
- CO_INDUSTRY_CODE,
- COMPANY_SIZE,
- CO_SP_ZONE_YN,
- TAX_CODE,
- INVEST_NATION_ID,
- CO_EMAIL_ADDRESS,
- CO_DECLARATION,
- RE_EMAIL_ADDRESS,
- INF_LAST_CORC_BUSS_DT)
复制代码
就是想把b.txt里的路径换下,谢谢。
作者: 116247215 时间: 2014-6-5 16:10
有人教教吗?
作者: 116247215 时间: 2014-6-5 16:37
教教吧,工作急用
作者: PowerShell 时间: 2014-6-5 18:00
powershell 代码- cd a:\pscode\116247215 # 这里改成进入目标目录
-
- $源字符数组 = $(Get-Content .\a.txt)[2].tochararray()
- $目标文件 = Get-Content .\b.txt -ReadCount 0
- $目标第二行数组 = $目标文件[1].tochararray()
- $新目标第二行 = "" + $目标第二行数组[0..32] + $源字符数组[0..7] + $目标第二行数组[41..$目标第二行数组.length]
- echo $新目标第二行
- $目标文件[1] = $新目标第二行
- $输出文件名 = '.\b.txt' + '.txt'
- Out-File -LiteralPath $输出文件名 -Encoding unicode -InputObject $目标文件
复制代码
作者: Batcher 时间: 2014-6-5 21:33
- @echo off
- for /f %%i in ('sed -r "2!d; s/.{33}(.{8}).*/\1/" b.txt') do set n=%%i
- sed -r "3s/.{8}/%n%/" a.txt > a_new.txt
复制代码
作者: 116247215 时间: 2014-6-6 09:52
Batcher ,您写的这个为什么没有用啊,a_new.txt没有东西
作者: 116247215 时间: 2014-6-6 09:58
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
作者: 116247215 时间: 2014-6-6 10:06
想要实现的是b.txt变为- load data
- infile "E:\XINHANETL\source\8033_20140530_CUSTOMER.txt"
- truncate
- into table etl.mid_customer
- fields terminated by ","optionally enclosed by '"'
- (BRANCH_ID,
- BASE_DATE,
- FULL_NAME,
- ID_TYPE,
- ID_NO,
- CIF_NO,
- NATIONALITY,
- CIF_TYPE,
- TEL_NO,
- ADDRESS,
- CONTACT_METHOD,
- CIF_CLASSIFIED,
- CAPITAL_AMT,
- CEO_NAME,
- CEO_ID_TYPE,
- CEO_ID_NO,
- OPEN_ORGAN,
- OPEN_DATE,
- CLOSE_DATE,
- CUST_TYPE,
- CO_TEL_NO,
- CO_FAX_NO,
- CO_RESIDENT_CODE,
- CO_INDUSTRY_CODE,
- COMPANY_SIZE,
- CO_SP_ZONE_YN,
- TAX_CODE,
- INVEST_NATION_ID,
- CO_EMAIL_ADDRESS,
- CO_DECLARATION,
- RE_EMAIL_ADDRESS,
- INF_LAST_CORC_BUSS_DT)
复制代码
作者: Batcher 时间: 2014-6-6 10:10
回复 7# 116247215
可能是你的sed版本问题,试试这个:
http://pan.baidu.com/share/link?shareid=452449&uk=1124163200
作者: 116247215 时间: 2014-6-6 10:23
回复 9# Batcher
您看下8楼,您写的这个不是这么实现的吧
作者: Batcher 时间: 2014-6-6 11:23
回复 10# 116247215
看过了。你现在执行5楼的代码,报错信息是什么?
作者: 116247215 时间: 2014-6-9 10:03
回复 11# Batcher
谢谢您,问题解决了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |