标题: [求助]文本内容查找替换
[打印本页]
作者: 5600549976
时间: 2009-6-3 10:13
标题: [求助]文本内容查找替换
有这样一批文本*.txt,内容如下
datacreat=08.11.1
datadel=08.2.01
filecreat=08.10.02
file2creat=08.11.02
能不能实现对*.txt做如下处理:
只要存在datadel=,不管后面的日期是什么,一律替换成datadel=08.01.01
作者: yishanju
时间: 2009-6-3 11:01
fr -ric:"(datadel=)(.*)" -t:"\108.2.01" *.txt
直接修改原文件,注意备份
FR 下载
http://baiy.cn/utils/fr/index.htm
作者: 5600549976
时间: 2009-6-3 23:37
代码很好用,但出现了一个问题,可能是我昨天没有把问题说全,不好意思,还有一行没有写
Quote: |
datacreat=08.11.1
datadel=08.2.01
filecreat=08.10.02
file2creat=08.11.02
yes_no_datadel=yes
max_datadel=21m |
|
结果为
Quote: |
datacreat=08.11.1
datadel=08.2.01
filecreat=08.10.02
file2creat=08.11.02
yes_no_datadel=08.2.01
max_datadel=08.2.01 |
|
最后两行也被替换了,因为里边儿含有datadel=
能不能只替换datadel=08.2.01这一行
作者: ccwan
时间: 2009-6-4 01:57
sed "/^datadel/s/=.*/=08.01.01/g" *.txt
作者: yishanju
时间: 2009-6-4 03:04
fr -ric:"(^datadel=)(.*)" -t:"\108.2.01" *.txt
作者: 不得不爱
时间: 2009-6-6 22:58
不要外部命令的:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
del temp.txt
for %%e in (*.txt) do (
for /f "delims=" %%a in (%%e) do (set aa=%%a
if "datadel="=="!aa:~,8!" set aa=datadel=08.01.01
echo !aa!>>temp.txt)
copy/y temp.txt %%e
del temp.txt)
作者: ccwan
时间: 2009-6-7 01:33
@echo off
del tmp.txt
for /f "tokens=1* delims==" %%i in (*.txt) do (if not %%i==datadel (echo %%i=%%j>>tmp.txt) else (echo %%i=08.01.01>>tmp.txt))
copy /y tmp.txt *.txt
del tmp.txt