如何删除一半日志?[已解决]
本帖最后由 rst52013353 于 2012-7-26 23:18 编辑文本大于50K就删除一半日志。正则不懂啊,哪位大大给个例子,或者过个传送门,搜索了半天没有。 对于日志,不要用笼统的说删除一半。合理的处理应该是保留最近的多少行。
如果日志内容有几行为一段的更不能乱删。
详细说明自己的问题并附上范本以及自己的代码才是基本的提问之道。 我自己之前的做法是做判断,如果日志大于50K就把原来的日志重命名标志序号备份一下。不知道是否可行。 呵呵,谢谢afan,你说的有道理。我说的日志就是一些数字,那有没有什么办法在文本大于50K 以后删除,部分以前的呢?
hijy=0004D004D0010404D006A004115A11400510144007A004D003D003D01661000410030007A
sih=0004D004D0010704D006A004D15A114005109440032004E0034003101661000410030007A
hji=0004D004D0010704D006A004D15A114005109440032004E0034003101661000410030007A
sih=0004D004D0010604D007A004115A114005109440030004D0034003101661000410030007A
hijy=03D004E00411496411500411490077004D007A00410
bib=0004D004D0010604D007A004115A114005109440030004D0034003101661000410030007A
jck=03D004D00611496A11500511450078004E005400550 谢谢jingygr,由于只能使用一个名字,重命名不太可行。 呵呵,谢谢afan,你说的有道理。我说的日志就是一些数字,那有没有什么办法在文本大于50K 以后删除,部分以 ...
rst52013353 发表于 2012-7-20 10:47 http://www.autoitx.com/images/common/back.gif
看你这个范本貌似是ini文件的格式,是只有这一个字段,还是有其它的字段?如果有其它的字段那是否需要保留其它字段,而仅删减这一个字段? 是的,只有一个字段,是ini文件的格式,但文件没有扩展名,如何在大于50K只保留最近100行呢? 半路出家当和尚,真是难啊,呵呵 Local $File = @ScriptDir & '\test.txt' ;指定测试文件
Local $File_bak = @ScriptDir & '\test_bak.txt' ;指定备份文件(可选)
If FileGetSize($File) / 1024 < 50 Then Exit -1 ;小于50K不操作
Local $str = FileRead($File)
FileDelete($File_bak)
FileMove($File, $File_bak)
Local $sNew = StringRegExpReplace($str, '^\s*(\[.+?\])(?s).*((?:\r\n\V+){100})\v*$', '$1$2')
FileWrite($File, $sNew)
ShellExecute($File) afan谢谢了,好象不行,test.txt文件没有删除。。。。。。。。{:face (189):} 本帖最后由 afan 于 2012-7-20 15:55 编辑
回复 10# rst52013353
除非你的文件并非示例所示,不是以[字段名]开始。
可以上传你的范本测试下,我都是测试成功后才发贴的。 确实是不行,我试好多次了,不知道是哪里的问题。呵呵
2356=0004D004D0010504E0054004515A114005101440031004E003D003D01661000410079007A
?3452=0004D004D0010604E0054005115A114005109440035004D0034003101661000410079007A
?1257=00055005300105063006D0051157114004E08330075005A0068006C01651000640076006C
?4556=0004D004D0010604E0054005115A114005109440035004D0034003101661000410079007A
?3545=00780062004800630075005A00580068006C00610011651158114004E 你的头像好酷啊 本帖最后由 afan 于 2012-7-20 18:59 编辑
确实是不行,我试好多次了,不知道是哪里的问题。呵呵
2356=0004D004D0010504E0054004515A1140051014400 ...
rst52013353 发表于 2012-7-20 18:21 http://www.autoitx.com/images/common/back.gif
你这总共才5行,也远小于50K,第三行就判断完成退出了。何来大于50K只保留最近100行?
反过来由我给你范本? 呵呵,怪我笨啊。是可以的,我把翻译好的文件放错地方了。谢谢你了afan!
页:
[1]
2