在示例文件中搜索和替换

时间:2012-02-02 11:29:28

标签: html search sed awk find

您好我有以下文件

      <strong>Ramandand Sagar Krishna part 34</strong> Vasudev comes back 
and girl disappears from Kansa's hand and the first temple she instructs Devs to make at Vindhyachal <a href="http://www.dailymotion.com/embed/video/x3p3gu?
width=320&#038;theme=none&#038;wmode=transparent">http://www.dailymotion.com/embed/video/x3p3gu?width=320&#038;theme=none&#038;wmode=transparent</a> <a 
href="http://www.dailymotion.com/video/x3p3gu_krishna-part-34_shortfilms" 
target="_blank">Krishna Part 34</a> <strong>Ramandand Sagar Krishna part 35</strong> Celebrations at Yashoda's house and Vasudev Devki freed from jail <a href="http://www.dailymotion.com/embed/video/x3p3sg?width=320&#038;theme=none&#038;wmode=transparent">
http://www.dailymotion.com/embed/video/x3p3sg?width=320&#038;theme=none&#038;wmode=transparent</a> <a href="http://www.dailymotion.com/video/x3p3sg_krishna-part-35_shortfilms" target="_blank">Krishna Part 35</a> <a href="http://www.dailymotion.com/video/x66a71_krishna-143_shortfilms" target="_blank">Krishna 143</a></em></div>

在上面的文件中我想替换

任何以下类型的HTML

<a href="http://www.dailymotion.com/embed/video/x5ftx3?width=320">http://www.dailymotion.com/embed/video/x5ftx3?width=320</a>

关键字是任何带有wmode=transparentwidth=320的HTML标记应该替换为空格。有一种简单的方法吗?有许多HTML标记,如 <a href=""> </a>在其行中没有wmode=transparent。 上面发布的文件是非常非常大的HTML中有大约30K行,所以我只发布了相关的行。 我在Ubuntu系统上。

2 个答案:

答案 0 :(得分:1)

正如Sorpigal指出的那样,解决这个问题并没有简单的答案。如果你愿意破坏你的行尾,你可以尝试我丑陋的混合物。它可能会对你有所帮助:

cat file.txt | tr -d "\n" | awk '{ for (i=1; i<=NF; i++) if ($i !~ /wmode=transparent|width=320/) printf "%s ", $i} END {print ""}' file.txt | sed -e "s%<a <a%<a%g"

输出:

<strong>Ramandand Sagar Krishna part 34</strong> Vasudev comes back and girl disappears from Kansa's hand and the first temple she instructs Devs to make at Vindhyachal <a href="http://www.dailymotion.com/embed/video/x3p3gu? <a href="http://www.dailymotion.com/video/x3p3gu_krishna-part-34_shortfilms" target="_blank">Krishna Part 34</a> <strong>Ramandand Sagar Krishna part 35</strong> Celebrations at Yashoda's house and Vasudev Devki freed from jail <a href="http://www.dailymotion.com/video/x3p3sg_krishna-part-35_shortfilms" target="_blank">Krishna Part 35</a> <a href="http://www.dailymotion.com/video/x66a71_krishna-143_shortfilms" target="_blank">Krishna 143</a></em></div>

我确信这种单线可以在某种程度上得到改善。如果您确实发现这个有用,那么您可能希望将边界上的输出拆分以整理。 Sed可能对此有好处。

答案 1 :(得分:0)

这是一个link,您可以在其中找到问题的答案。

在您的情况下,您必须为sed创建一个脚本文件,如

  

S / WMODE =透明//克
  S /宽度= 320 //克

并运行类似的东西:

  

sed -f replace_file in.txt&gt; out.txt

我希望它对你有所帮助。

度过愉快的一天