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

[问题求助] sed 当一行有多个关键词时如何提取第一组关键词中间的内容

sed 当一行有多个关键词时如何提取第一组关键词中间的内容
aaa '<span class=a><span class=b>ABC<ahref="//link.com">link</a></span>5678</span>gg<hth<span class=b>000<1>2<3></span>
上行中有多个<span class=b>和</span>
想要提取第一个<span class=b>和第一个</span>之间的字符串
ABC<a href="//link.com">link</a>

匹配第一个"号前的内容,可以用 [^\"] 如果把引号改为关键词呢
sed  "s/[^<span class=b>]*<span class=b>\([^>]*>[^>]*>\).*/\1/" a.txt
pause
思路是 匹配非<span class=b>字符串,可以重复N次,到<span class=b>止
但结果只是删除了<span class=b>字符串,它前面的字符串也显示了出来.
该如何作呢?
技术问题请到论坛发帖求助!

本想通过举例来举一反三,发现还是不行
4楼batcher的代码通过关键字前面没有的字符/,能解决顶楼问题,
但是若<span class=b>前面含有 / 则又不行了,并且</a>也是唯一性。

现在想知道的是 sed 能不能做到,只通过已知的关键字提取他们之间的内容.
还是一顶楼为例,即不能通过不确定的条件查找,
比如 <span class=b> 前面没有 /  
或需提取的内容结尾是</a>
技术问题请到论坛发帖求助!

TOP

5楼 batman 的代码也类似,利用了需提取字符串后面没有引号的特点,若最后加个引号则又是提取到最后的了。
技术问题请到论坛发帖求助!

TOP

返回列表