LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: longdas

把一个HTML文件用gawk分成从< 到 > 为一行, 应该怎么做?

[复制链接]
发表于 2004-4-15 11:23:59 | 显示全部楼层
这是我从linuxsir网站源码截取的。其实要html的源码例子遍地都是,关键是处理这些源码的工具和思路。这是最值得学习的地方。如果上面的一段能够完成,举一反三不就知道如何处理了嘛。
发表于 2004-4-15 15:07:00 | 显示全部楼层
  1. cat file|awk '{gsub(/></,">\n<")}{print}'|while read line;do
  2.         if echo $line|grep -q -v ">$";then
  3.                 echo $line|tr -d "\n"
  4.         else
  5.                 echo $line
  6.         fi
  7. done|\
  8. while read line;do
  9.         echo "$line\n"
  10. done
复制代码
/home/javalee#cat file
<table cellpadding="0" cellspacing="0" border="0" bgcolor="
#000000"  width="100%" align="center"><tr><td>
<table cellpadding="4" cellspacing="1" border="0
"  width="100%">
<tr>
        <td bgcolor="#7ca3d6" width="175" nowrap><font face="verdana,
        arial, helvetica" color="#FFFFFF" class="thtcolor"></font></td>
                <td bgcolor="#7ca3d6" width="100%">



                                                                                   <!-- Thread nav
and post images -->     <table width="100%" border="0" cellpadding="

                                                                                   0" cellspacing="0">

                                                                                           <tr>


        <td width="100%"><font face="verdana, arial, helvetica" color="#FFFFFF" class="thtcolor">


   </font></td>







                                                                              <td><a href="newthread.php?s=&action=newthread&forumid=60"><img src="images/newthread.gif" border="0" alt="



                                                                              "></a></td>



                                                                                              <td><font face="verdana, arial, helvetica">&nbsp;



                                                                                              &nbsp;</font></td>











                                                                 <td><a href="newreply.php?s=&action=newreply





                                                                 &threadid=101402"><img src="





                                                                 images/reply.gif" border="0" alt=""></a></td>















                            </tr>

















                                                                                               </table><!-- /Thread nav and post images -->





















                                                        </td>










                                                        </tr>










                                                        </table>
/home/javalee#

结果:
  1. <table cellpadding="0" cellspacing="0" border="0" bgcolor="#000000" width="100%" align="center">

  2. <tr>

  3. <td>

  4. <table cellpadding="4" cellspacing="1" border="0" width="100%">

  5. <tr>

  6. <td bgcolor="#7ca3d6" width="175" nowrap>

  7. <font face="verdana,arial, helvetica" color="#FFFFFF" class="thtcolor">

  8. </font>

  9. </td>

  10. <td bgcolor="#7ca3d6" width="100%">

  11. <!-- Thread nav and post images --> <table width="100%" border="0" cellpadding="0" cellspacing="0">
  12. <tr>

  13. <td width="100%">

  14. <font face="verdana, arial, helvetica" color="#FFFFFF" class="thtcolor">

  15. </font>

  16. </td>

  17. <td>

  18. <a href="newthread.php?s=&action=newthread&forumid=60">

  19. <img src="images/newthread.gif" border="0" alt="">

  20. </a>

  21. </td>

  22. <td>

  23. <font face="verdana, arial, helvetica">&nbsp;&nbsp;</font>

  24. </td>

  25. <td>

  26. <a href="newreply.php?s=&action=newreply&threadid=101402">

  27. <img src="images/reply.gif" border="0" alt="">

  28. </a>

  29. </td>

  30. </tr>

  31. </table>

  32. <!-- /Thread nav and post images -->

  33. </td>

  34. </tr>

  35. </table>
复制代码
发表于 2004-4-15 22:22:32 | 显示全部楼层
讲讲思路把,谢谢
发表于 2004-4-15 23:27:02 | 显示全部楼层
最初由 qhgary 发表
讲讲思路把,谢谢

我的代码很简单明了的,
cat file|awk '{gsub(/></,">\n<")}{print}'
#将文件><部分分离,
if echo $line|grep -q -v ">$";then
                echo $line|tr -d "\n"
#如果是>结尾的去掉回车,实际上基本等于把<...>部分变成了一行,(根据实际情况,没有考虑太多)
while read line;do
        echo "$line\n"
done
#在行与行之间加入空行
ps:效率差了些,估计能用! ;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表