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

[文本处理] [已解决]批处理怎样把两个文本合并后去除重复的行?

本帖最后由 vokins 于 2013-9-4 18:03 编辑

求助,

我想下载
http://webscan.360.cn/url
这个网页,并把网页代码中的其余部分去除掉。
  1. <!--end tips -->
  2. <script>
  3. $(function(){
  4. $("#menu-more").hover(function(){
  5. $("#menu-more-list").show();
  6. $("#menu-more").css("background-color","#3764B2");
  7. $("#menu-more").css("padding-bottom","2px");
  8. },function(){
  9. $("#menu-more-list").hide();
  10. $("#menu-more").css("background-color","");
  11. $("#menu-more").css("padding-bottom","0px");
  12. })
  13. })
  14. </script>
  15. <div class="faq clearfix">
  16. <!--<div class="fqa_navigation"><a href="#" title="">漏洞库</a> ›</div>-->
  17. <div class="faq_conbox">
  18. <h2 style="color:#333;width:86%;margin-bottom:10px;padding: 2px 10px;font-size:14px;padding:2px 10px;background: none repeat scroll 0 0 #FFE6E6;border: 1px solid #EEBBBB;">如下网址可能会对您的电脑造成伤害:如在您的电脑上安装恶意软件;通过欺诈钓鱼页面窃取您的账号等重要信息。请勿随意访问。
  19. </h2>
  20. <h2>今天排行</h2>
  21. <li><a href="/url/www.70pao.com.html" title="www.70pao.com恶意网站,www.70pao.com是什么">www.70pao.com</a></li>
  22. <h2>昨天排行</h2>
  23. <li>
  24. <ul>
  25. <li><a href="/url/www.63kxw.com.html" title="www.63kxw.com恶意网站,www.63kxw.com是什么">www.63kxw.com</a></li>
  26. <li><a href="/url/www.688mi.com.html" title="www.688mi.com恶意网站,www.688mi.com是什么">www.688mi.com</a></li>
  27. <li><a href="/url/www.70238.com.html" title="www.70238.com恶意网站,www.70238.com是什么">www.70238.com</a></li>
  28. <li><a href="/url/www.70cj.net.html" title="www.70cj.net恶意网站,www.70cj.net是什么">www.70cj.net</a></li>
  29. <li><a href="/url/www.70pao.com.html" title="www.70pao.com恶意网站,www.70pao.com是什么">www.70pao.com</a></li>
  30. <li><a href="/url/www.723724.com.html" title="www.723724.com恶意网站,www.723724.com是什么">www.723724.com</a></li>
  31. <li><a href="/url/www.7241.cn.html" title="www.7241.cn恶意网站,www.7241.cn是什么">www.7241.cn</a></li>
  32. <li><a href="/url/www.738393.com.html" title="www.738393.com恶意网站,www.738393.com是什么">www.73839
复制代码
只保留哪些恶意网址的域名,
并在每个域名前加入0.0.0.0。

变成:
0.0.0.0 www.70cj.net
0.0.0.0 www.7241.cn
0.0.0.0 www.738393.com
......

这是我自己写的代码,有点烂,效率还低,请高手指教
  1. wget http://webscan.360.cn/url -O url.txt
  2. sed -i "1,91d" url.txt
  3. sed -i "2143,$d" url.txt
  4. sed -i "s/^[ \t]*//g" url.txt
  5. sed -i "s/>/\n/g" url.txt
  6. sed -i "s/</\n/g" url.txt
  7. sed -i "s/.*<li><a[^>]*>//" url.txt
  8. sed -i "/.html/d" url.txt
  9. sed -i "/行/d" url.txt
  10. sed -i "/网/d" url.txt
复制代码
ps.我还在mwsl下载了hosts文件,想把这个同上面的360 合并,但是会有重复的行,不知道如何去除。
当然用akelpad之类的编辑器手动删除重复行就好了,但是有没有可以用批处理解决全自动的办法呢?
:mwsl
del Mwsl.txt
wget http://www.mwsl.org.cn/hosts/hosts -O Mwsl.txt
sed -i "1,9d" Mwsl.txt
sed -i "1i\#Malicious Web site Labs" Mwsl.txt
sed -i "s/50.118.116.68/0.0.0.0/g" Mwsl.txt
goto :eof


再次请教,盼复
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 6# vokins
  1. (gawk "!a[$0]++" "a.txt" "b.txt" "c.txt" "d.txt")>e.txt
复制代码
1

评分人数

    • vokins: 感谢解惑。技术 + 1

TOP

回复 4# batman


    非常感谢版主的解答,这个直接用ie访问对象的办法也不错,就是速度稍微有些慢。

TOP

回复 3# luke


    非常感谢您的解答。

TOP

三方的 GAWK wget
terse 发表于 2013-9-4 01:02


再追加一个问题,比如我本地有一个txt的hosts文件a,b,c。
然后用上面的代码合成下载了恶意网站列表,发现和本地的文件又重复,应该怎么去除重复呢?
gawk "!a[$0]++" <a.txt>b.txt吗?

或者我是否可以这样做:
就是我用编辑器把重复的行提取到文件 chongfu.txt里面,用刚才的合成的文件在chongfu.txt里面查找去除重复?
应该如何操作呢?

TOP

三方的 GAWK wget
  1. @echo off
  2. (wget -q -O- http://webscan.360.cn/url | gawk "BEGIN {print \"#Malicious Web site Labs\"};/\.html/{print $0=gensub(/.*url\/(.+)\.html.*/,\"0.0.0.0 \\1\",\"1\")}"
  3. wget -q -O- http://www.mwsl.org.cn/hosts/hosts | gawk "NR>9{print \"0.0.0.0\",$2}"
  4. )>hosts.txt
  5. gawk "!a[$0]++" <hosts.txt>hosts
  6. del hosts.txt
  7. pause
复制代码

TOP

也可以直接用IE对象来访问
  1. Dim objIE, objTexts, objText, objYM, File, Url
  2. Path = CreateObject("Wscript.Shell").CurrentDirectory
  3. File = "url.txt"
  4. Url = "http://webscan.360.cn/url"
  5. Set objIE = createObject("InternetExplorer.Application")
  6. objIE.Navigate Url
  7. objIE.Visible = False
  8. Do Until objIE.Readystate = 4 : WScript.Sleep 200 : Loop
  9. Set objTexts = objie.Document.GetElementsByTagName("li")
  10. For Each objText In objTexts
  11.   If InStr (objYM, objText.InnerText) = 0 And _
  12.     InStr (objText.InnerText, "www") Then _
  13.       objYM = objYM & "0.0.0.0 " & objText.InnerText & vbCrLf
  14. Next
  15. objIE.Quit
  16. Dim objFSO, objSHELL
  17. Set objFSO = CreateObject("Scripting.FileSystemObject")
  18. objFSO.OpenTextFile(File,2,1).Write objYM
  19. Set objSHELL = CreateObject("Wscript.Shell")
  20. objSHELL.Run "cmd /cstart " & File,0,0
  21. Set objFSO = Nothing
  22. Set objSHELL = Nothing
  23. Set objie = Nothing
复制代码
***共同提高***

TOP

用powershell吗?
访问http://webscan.360.cn/url 将url输出到一个文本中,以后可以设置为任务计划定期跑

$hashset=New-Object System.Collections.Generic.HashSet[string]
$desFile="d:\1\file.txt"
$url="http://webscan.360.cn/url"
$item=Invoke-WebRequest $url
$item.ParsedHtml.getElementsByTagName("li") | %{
    if($hashset.add($_.innerText)){
        "0.0.0.0 "+$_.innerText | Out-File -FilePath $desFile -Append  
        }
    }

TOP

先把网页另存为web.html,然后运行下面的vbs代码:
  1. Dim objDOM, objTexts, objText, objYM, File
  2. Path = CreateObject("Wscript.Shell").CurrentDirectory
  3. File = "url.txt"
  4. Set objDOM = GetObject(Path & "\web.html","htmlfile")
  5. Do Until objDOM.Readystate = "complete" : WScript.Sleep 200 : Loop
  6. Set objTexts = objDOM.GetElementsByTagName("li")
  7. For Each objText In objTexts
  8.   If InStr (objYM, objText.InnerText) = 0 Then _
  9.     objYM = objYM & "0.0.0.0 " & objText.InnerText & vbCrLf
  10. Next
  11. Dim objFSO, objSHELL
  12. Set objFSO = CreateObject("Scripting.FileSystemObject")
  13. objFSO.OpenTextFile(File,2,1).Write objYM
  14. Set objSHELL = CreateObject("Wscript.Shell")
  15. objSHELL.Run "cmd /cstart " & File,0,0
  16. Set objFSO = Nothing
  17. Set objSHELL = Nothing
  18. Set objDOM = Nothing
复制代码
***共同提高***

TOP

返回列表