基于Javascript的磁盘文本处理

基于Javascript的磁盘文本处理,javascript,regex,node.js,Javascript,Regex,Node.js,我有一些html文件需要进行自动处理,基本上是用regex替换的,但也有一些更复杂的操作,比如将选定的文本块从一个文件复制到另一个文件 我想创建一系列脚本,让我能够进行此处理(需要在不同批次的文件上进行多次处理)。使用Go来实现这一点(将文件读入内存、正则表达式、保存到磁盘)很简单,但我是项目中唯一熟悉Go的成员 Javascript是一种更普遍的语言,我确实有熟悉该语言的项目成员,所以在这方面它更适合。如果我以后不在,其他人可以编辑脚本 有没有一种简单的方法来编写一些JS脚本来进行磁盘文本处理

我有一些html文件需要进行自动处理,基本上是用regex替换的,但也有一些更复杂的操作,比如将选定的文本块从一个文件复制到另一个文件

我想创建一系列脚本,让我能够进行此处理(需要在不同批次的文件上进行多次处理)。使用Go来实现这一点(将文件读入内存、正则表达式、保存到磁盘)很简单,但我是项目中唯一熟悉Go的成员

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

有没有一种简单的方法来编写一些JS脚本来进行磁盘文本处理?我正在寻找一个跨平台的解决方案(OSX、Windows)。理想情况下,一旦编写好脚本,就可以通过双击一个图标来执行它们——在某个时候,会有“非计算机人员”参与其中

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

我所看到的:

  • js是第一个出现在我脑海中的东西,因为我知道它有文件系统访问工具,显然还有regex的容量。但我以前从未使用过Node,根据我所阅读的教程,对于这样简单的东西来说,这似乎有些过头了

  • 通过谷歌搜索,你可以找到大量的“javascript编译”工具。有些不是跨平台的,有些看起来很旧,或者没有积极维护,等等。没有一个像我这样容易理解,只需要编写一些JS脚本就可以了


有什么想法吗?

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

下面是一个关于使用节点模块Cheerio的快速教程。它允许您使用“类似jquery的语法”访问html文件。你不需要使用正则表达式

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

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

一些提示:

您需要任何类型的DOM HTML解析器,不仅是JS,也不是JS

您可以通过使用或库(我已经多次使用了第二个库)来使用Java实现这一点。如果您知道像Netbeans这样的JS和IDE非常有帮助,那么这是一种非常简单的语言。所以可以很快地用它来制作

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

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

例如,您可以创建一个ETL进行处理(其中嵌入了JS作为两种脚本语言之一,但没有DOM解析器——对于这一种,您需要使用一些Java和类似的库)


您也可以使用PHP来实现这一点,这样您就可以在线(或在本地服务器上)创建一个服务,接收这些html文件并抛出经过处理的文件。

首先,我认为您低估了复杂性。声明

“使用Go执行此操作(将文件读入内存, regex,保存到磁盘)但我是项目中唯一一个 熟悉围棋。”

这可能是错误的。用RegExp解析HTML是个坏主意。(谷歌一下,你就会明白原因)

其次,如果您可以在Go中使用regexp轻松地编写代码,那么您也可以同样轻松地在Javascript中编写相同的代码。它们都支持RegExp和文件操作。如果您不确定Javascript/Node.js的详细信息,我建议您在Go中编写简单的解决方案,然后与同事一起将其翻译成Javascript

由于Javascript是一种脚本语言,在Node.js中编写命令行实用程序是很简单的

一些让你开始的建议


谢谢,这正是我想要的;干杯看起来很棒。听起来你的老项目和我现在的项目很相似。在通过gui向正在运行节点脚本的用户提供反馈时,还有什么需要补充的吗?(留言盒或类似的东西?)是的,虽然我走过雷格克斯阴影的山谷,但我不会害怕克图鲁别担心,我在跟踪;我没有试图用正则表达式本身解析html;更像是查找和替换。但是jsdev提到的Cheerio模块会有所帮助。谢谢你的输入。谢谢,但我想你错过了这一部分:“我确实有熟悉javascript语言的项目成员,所以在这方面它更适合。”我选择JS是因为我的团队成员都知道它;我对Java解决方案(yikes!)或PHP解决方案,或者这个…Pentaho的东西不感兴趣,这看起来太过分了(!!!)。PhantomJS看起来可以完成这项工作,但Node似乎要容易得多。无论如何谢谢你!