使用 Javascript 进行磁盘文本处理

On-Disk Text Processing With Javascript

本文关键字:文本 处理 磁盘 Javascript 使用      更新时间:2023-09-26

我有一些需要自动处理的html文件,基本上是正则表达式替换,但也有一些更复杂的操作,例如将选定的文本块从一个文件复制到另一个文件。

我想创建一系列脚本来让我进行此处理(需要对不同批次的文件进行多次处理(。 为此使用 Go 是微不足道的(将文件读入内存、正则表达式、保存到磁盘(,但我是项目中唯一熟悉 Go 的成员。

Javascript是一个更普遍的东西,我确实有熟悉该语言的项目成员,所以它在这方面更适合。 如果我以后不在,其他人可以编辑脚本。

有没有一种简单的方法来编写一些JS脚本来进行磁盘文本处理? 我正在寻找一个跨平台的解决方案(OSX,Windows(。 理想情况下,一旦编写了脚本,就可以通过双击图标来执行它们 - 在某些时候会涉及"不是计算机人员"。

另外,我希望能够执行某种警报/消息框来通知用户脚本的成功/失败。 (这可能是一项艰巨的任务,并且是次要的。

我看过什么:

  • Node.js 是我脑海中浮现的第一件事,因为我知道它具有文件系统访问工具,显然还有正则表达式容量。 但是我以前从未使用过 Node,根据我读过的教程,这么简单的东西似乎有点矫枉过正。

  • 您可以通过谷歌搜索找到大量"JavaScript编译"工具。 有些不是跨平台的,有些看起来很旧或没有积极维护,等等。 它们都没有像我这样容易上手并编写一些JS脚本而引起我的注意。

有什么想法吗?

Node.js是一个简单的解决方案,通过它的框架,您可以根据需要创建或稍后修改脚本。这样你就不会被别人的代码锁定。而且使用起来并不难。以下是使用 node 访问文件的快速教程.js

http://www.sitepoint.com/accessing-the-file-system-in-node-js/

这里有一个关于使用名为Cheerio的节点模块的快速教程。它允许您使用"jquery类似语法"访问html文件。您不需要使用正则表达式。

http://maxogden.com/scraping-with-node.html

我曾经为一个客户做过一个项目,它需要解析数百个html文件,以根据某些标准检查和替换某些图像文件。当时我不熟悉 node,所以我阅读了一些教程并在大约一个小时内编写了脚本。

只要设置了 Nodejs 的路径,您就可以在命令行上运行它。

一些提示:

你需要任何类型的 DOM HTML 解析器,不仅是 JS,也不是特定的 JS。

你可以使用jTidy或jSoup库来用Java做这件事(我已经用过几次第二个了(。如果您了解 JS 和 IDE,那么学习它是非常简单的语言,就像 Netbeans 有很大帮助一样。所以可以用它快速制作。

您可以使用 PhantomJS 创建一些作业文件,并创建 shell/批处理代码以在某些文件上运行它们。您可能需要为作业文件编写生成器(例如获取文件列表,为每个文件创建作业文件并运行它们(。

您可以使用 Node.js这并不过分,我相信任何解决方案都不会是微不足道的。

您可以创建一个 ETL 进行处理,例如 Pentaho ETL(它嵌入了 JS 作为两种脚本语言之一......但是没有 DOM 解析器 - 对于那个,你需要在那里使用一些 Java 和一些类似于本文的库(。

你也可以用PHP和Simple HTML DOM解析器来做到这一点 - 所以你可以在线(或在本地服务器上(创建一个服务,获取这些html文件并丢弃处理过的文件。

首先,

我认为你低估了复杂性。声明

"为此使用 Go 是微不足道的(将文件读入内存, 正则表达式,保存到磁盘(但我是该项目的唯一成员 熟悉围棋。

可能是的。使用RegExp解析HTML只是一个坏主意。(谷歌一下,你就会明白为什么(

其次,如果你可以在Go中使用RegExps简单地编写代码,那么你可以很容易地在Javascript中编写同样的东西。它们都支持正则表达式和文件操作。如果你不确定Javascript/Node.js的细节,我建议用Go编写简单的解决方案,然后和同事一起将它翻译成Javascript。

由于Javascript是一种脚本语言,因此在Node.js中编写命令行实用程序非常简单。

帮助您入门的一些提示

  • Javascript 中的 RegExp
  • 在 Node 中构建命令行应用.js