Board logo

标题: [文本处理] [已解決]批处理怎样刪除兩個特定字符之間的內容並進行替換<多行>? [打印本页]

作者: leo198444    时间: 2011-9-11 21:56     标题: [已解決]批处理怎样刪除兩個特定字符之間的內容並進行替換<多行>?

本帖最后由 leo198444 于 2011-9-12 14:08 编辑

请教一下

我有一个a.txt文本,要差找特定字串和特定字串之间的内容,并对特定字符进行替换

以下红色数字是要替换的部份

例如 9  要替換成 StrCpy $download9

但9这个数字是非固定的

范例

处理前:
<div class="x-p-ext-block" style="margin-buttom: 5px"><div class="x-p-ext-title" style="width:1024px;">.part009.rar</div><div class="x-p-ext-img"><a href="http://photo.xuite.net/_pic/hannstar/1884112/69089575.jpg/redir"><img src="http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg" border="0"></a></div><div class="x-p-ext-desc" style="width: 1024px;"></div></div>


处理后:
StrCpy $download9 'http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg'
请问要怎么处理,谢谢
作者: leo198444    时间: 2011-9-11 22:36

本帖最后由 leo198444 于 2011-9-11 22:43 编辑

我的具体想法是...


第一阶段以<div class="x-p-ext-block"part00作为分隔符,然后包含分隔符进行删除
<div class="x-p-ext-block" style="margin-buttom: 5px"><div class="x-p-ext-title" style="width:1024px;">.part009.rar</div><div class="x-p-ext-img"><a href="http://photo.xuite.net/_pic/hannstar/1884112/69089575.jpg/redir"><img src="http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg" border="0"></a></div><div class="x-p-ext-desc" style="width: 1024px;"></div></div>


第二阶段以.rar<img src="作为分隔符,然后包含分隔符进行删除
9.rar</div><div class="x-p-ext-img"><a href="http://photo.xuite.net/_pic/hannstar/1884112/69089575.jpg/redir"><img src="http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg" border="0"></a></div><div class="x-p-ext-desc" style="width: 1024px;"></div></div>


第三阶段以" border</div></div>作为分隔符,然后包含分隔符进行删除
9http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg" border="0"></a></div><div class="x-p-ext-desc" style="width: 1024px;"></div></div>


第四阶段在每个行首插入这个字串StrCpy $download
StrCpy $download9 http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg


第五阶段把http替换为 'http
StrCpy $download9 'http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg


第六阶段把jpg替换为jpg'  
StrCpy $download9 'http://3.share.photo.xuite.net/hannstar/13e42f7/1884112/69089575_x.jpg'


完成

虽然我有学程式,对一些变量函式有点基础

但是尝试批处理不知道怎么转义字符,也不懂怎样处理这么复杂的字串

请求帮忙
作者: weichenxiehou    时间: 2011-9-12 07:37

有点儿乱的感觉。。。但是不能以字串作为分割符呀,只能以单个字符作为分隔符,你所说的删除倒是可以用set的替换功能办到。但楼主讲得确实有点儿费解啊,就在就题论题了,没有把问题的通用规律分析出来。
作者: Seder    时间: 2011-9-12 10:41

  1. sed -r "s/.*part00([0-9]).rar.*src=.(.*). border.*/StrCpy $download\1 '\2'/" test.txt >output.txt
复制代码

作者: leo198444    时间: 2011-9-12 13:44

本帖最后由 leo198444 于 2011-9-12 13:50 编辑

我比较大的问题就在于必须用字串作为分割符进行删除

文中提到的分隔符部份是固定存在的

我尝试学习sed 来替换看看

给楼上的Seder ,感谢帮忙

但是我用你的代码处理后的字串是一片空白

还不能理解原理@@
作者: leo198444    时间: 2011-9-12 14:03

Seder 发表于 2011-9-12 10:41



    抱歉
刚执行忘了加sed.exe文件

成功了

但是9这个数字有超过十位数

您的代码一旦超过十位数的行就不进行处理了

请问该怎么修改能处理超过十位数

像遇上part010.rar的数字就不处理了

谢谢
作者: leo198444    时间: 2011-9-12 14:08

研究了一下

瞭解原理了,改成這樣就能辨別百位數了

謝謝Seder幫忙
  1. sed -r "s/.*part([0-9][0-9][0-9]).rar.*src=.(.*). border.*/StrCpy $download\1 '\2'/" a.txt >output.txt
复制代码

作者: Seder    时间: 2011-9-12 18:13

你又不说清楚点,其实都很容易实现的




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2