最简单的脚本方法来合并两个文本文件 – Ruby,Python,JavaScript,Java?

我有两个文本文件,一个包含HTML,另一个包含URL slugs:

文件1(HTML):

  • ...

    文件2(URL SLUGS):

     thomas-friedman-the-world-is-flat michael-dagleish-scotland-in-wartime dr-raymond-kinsella-progress-in-cancer-treatments ... 

    我需要合并它们,以便将FILE 2中的slugs插入到FILE 1中的HTML中,如下所示:

    OUTPUT:

     
  • 什么是最好的方法,哪种语言最适合以最小的复杂度完成这项任务?

    您需要zip-​​function,它可以在大多数语言中使用。 它的目的是并行处理两个或多个arrays。
    在Ruby中,它将是这样的:

     f1 = File.readlines('file1.txt') f2 = File.readlines('file2.txt') File.open('file3.txt','w') do |output_file| f1.zip(f2) do |a,b| output_file.puts a.sub('/article/','/article/'+b) end end 

    为了压缩更多,你可以做两个数组f1.zip(f2,f3,...) do |a,b,c,...|

    这在任何语言中都很容易。 这是伪Python; 我省略了lxml位,因为我无法访问它们,我不记得语法。 不过,他们并不困难。

     with open(...) as htmls, open(...) as slugs, open(...) as output: for html, slug in zip(htmls, slugs): root = lxml.etree.fromstring(html) # do some fiddling with lxml to get the name slug = slug.split("-")[(len(name.split()):] # add in the extra child in lxml output.write(root.tostring()) 

    有趣的function:

    • 这不会立即读入整个文件; 它按块进行分块(嗯,逐行,但Python会缓冲它)。 如果文件很大,但可能无关紧要,这很有用。

    • lxml可能过度,取决于html字符串格式的严格程度。 如果它们保证相同且格式正确,则可能更容易使用简单的字符串操作。 另一方面, lxml非常快,并且提供了更大的灵活性。

    Ruby one liner:

     File.open("joined.txt","w") { |f| f.puts ['file1.txt', 'file2.txt'].map{ |s| IO.read(s) }} 

    最简单的方法是使用您最熟悉的列出语言。 即使它没有产生最好的解决方案,你也可以用最少的(精神)努力完成工作。

    如果你不知道它们,那么Perl是一个不错的选择,因为这是它的设计目的。 (我假设你理解正则表达式……)而且通过其他一些答案,Python也是一个不错的选择。

    Python是很棒的语言只要看看这六行python就可以合并任何大文本文件,刚才我已经合并了2个10 GB的文本文件。

      o = open("E:/temp/3.txt","wb") #open for write for line in open("E:/temp/1.txt","rb"): o.write(line) for line in open("E:/temp/2.txt","rb"): o.write(line) o.close() 

    PHP是最简单的!

     $firstFile = file('file1.txt'); $secodFile = file('file2.txt'); $findKey='/article/'; $output=''; if (count($firstFile)==count($secodFile)) or die('record counts dont match'); for($i=0;$i