使用 Javascript 进行磁盘文本处理
On-Disk Text Processing With Javascript
我有一些需要自动处理的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
- CSS无法处理文本区域
- SVG元素——处理和选择文本
- 替代输入:基于按钮点击事件的文本更改处理程序
- 通过从文本区域获取代码,在画布中运行处理代码
- 如何使用 Angularjs 使流式处理更改输入中输入的文本
- 如何在不分隔跨度字母的情况下对文本进行动画处理
- 可以't get.click()来处理禁用的文本区域
- Cufon无法处理日语文本
- Action.on('模糊')不't处理输入文本-jQuery 1.9+
- 当通过javascript而不是按键/复制/粘贴更新文本输入时使用的事件处理程序
- 文本框中的数字需要处理
- jquery:$(input).keydown无法在单选按钮上设置处理程序,同样的代码也适用于文本
- 文本处理-识别代码语法
- 具有搜索文本的功能,不能很好地处理标点符号/符号.Jquery/Jquery mobile.
- 仅对路径/形状进行动画处理,在 raphael.js 集中没有文本
- 如果处理字符串值的文本区域是只读的,如何使用 JavaScript 在虚拟键盘上使用 CAPSLOCK 功能
- 如何使用javascript处理大型html文本页面
- 如何在javascript中处理大型文本文件需要切片算法
- 使用 Javascript 进行磁盘文本处理
- jQuery文本处理计数器