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

[文本处理] 批处理怎样使用正则表达式替换日期?

本帖最后由 FIR1987 于 2011-5-3 22:14 编辑

此题背景如下

有日志文件格式如下

F:\soft\log\分析表.log:星期四 14 十月 2010  Timing, TOTAL TIME (CREATE CUBE),10:17:45  
F:\soft\log\分析表.log:星期五 15 十月 2010  Timing, TOTAL TIME (CREATE CUBE),10:17:45  
F:\soft\log\分析表.log:星期六 16 十月 2010  Timing, TOTAL TIME (CREATE CUBE),10:17:45  

现在我希望将14 十月 2010  处理为2010-10-14  
14 十月 2010  多个日期 不是就这一个 呵呵

这个是一个叫cognos工具生cube产生的日志
目前是一个批处理初学者,问的傻问题还请多多见谅

24# FIR1987


sed只需要下载,不需要安装。
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

gawk 。。。。

TOP

23# hfg1977
谢谢 你的正则,要用sed还要装东西吧
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

  1. type 01.txt|sed -e "s/\([0-9]\+\) \(..月\) \([0-9]\{4\}\)/\3-\2-\1/" -e "s/十月/10/" -e "s/一月/01/" -e "s/二月/02/" -e "s/三月/03/" -e "s/四月/04/"
复制代码

TOP

@echo off&setlocal enabledelayedexpansion
cd /d F:\soft\log&set /a n=100
for %%a in (一 二 三 四 五 六 七 八 九 十 十一 十二) do set /a n+=1&set "%%a月=!n:~1!"
(for /f "tokens=1-4*" %%a in (分析表.log) do echo %%a %%d-!%%c!-%%b %%e)>$
move $ 分析表.log
start 分析表.log
pause>nul
batman 发表于 2011-4-28 15:43

高,学习了,最精妙的是"%%a月=!n:~1!" 和 !%%c!,要是我只会用call 了。

TOP

20# FIR1987


知道怎样编辑顶楼的帖子吗?知道怎样把11楼的内容复制、粘贴到顶楼吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

11# FIR1987


请把问题背景描述更新到顶楼,以便后来人查看。
Batcher 发表于 2011-5-2 20:34

问题背景描述?什么意思 怎么更新到楼上 。。呵呵
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

11# FIR1987


请把问题背景描述更新到顶楼,以便后来人查看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

17# FIR1987


一个临时文件的名字而已,但必须是windows允许的文件名字符,不能是任意字符。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

自己解释下
都是100 是因为没用延迟变量

$ 符号应该可以是任意字符 $ 只是斑竹习惯(对吧) 呵呵
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

大致明白了
先遍历中文汉字 此时n=100 每遍历一个 100+1 -》101、102、103 。。112
~1就是取1后面的数字也就是01、02。。。12 分别替换一月、二月

但是我想问下
@echo off
set /a n=100
for %%a in (一 二 三 四 五 六 七 八 九 十 十一 十二) do set /a n+=1&echo %n%
pause

为何我每次显示都是100呢

还有$符号 我看版主经常用 这个能解释下吗 多谢
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

大致明白了
先遍历中文汉字 此时n=100 每遍历一个 100+1 -》101、102、103 。。112
~1就是取1后面的数字也就是01、02。。。12 分别替换一月、二月

但是我想问下
@echo off
set /a n=100
for %%a in (一 二 三 四 五 六 七 八 九 十 十一 十二) do set /a n+=1&echo %n%
pause

为何我每次显示都是100呢

还有$符号 我看版主经常用 这个能解释下吗 多谢
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

13# FIR1987


批处理set命令截取字符详解
http://bbs.bathome.net/thread-996-1-1.html

批处理set命令变量字符截取点点通
http://bbs.bathome.net/thread-40-1-1.html

批处理新手set命令截取字符练习工具
http://bbs.bathome.net/thread-1149-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

很简洁 大致明白了 非常感谢
  1. %%a月=!n:~1!
复制代码
我知道是替换 ~1是个怎么用法
那个$就是个临时文件 用什么字母代替都成吧 、
谢谢
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

返回列表