如何使用常见的 Linux 命令行工具从 javascript 文件中删除所有注释?

如何使用常见的 Linux 命令行工具从 javascript 文件中删除所有注释?

我有一个 javascript 文件,其中包含急需的注释。 Javascript 使用 C 风格的注释:

//this is a single line comment

/* this is
a multi-line
comment */

然而,实际的代码看起来更接近这个:

/* blah blah
// [NOTE] blah blah
// blah
// blah blah blah
// blah
// blah blah
function("string", false);
// 1: blah blah blah blah blah blah
// [1] https://example.com
function("string", true);
/* blah blah
* blah blah //* /
function("string", false);
// * * * /
// 18: blah blah blah blah blah blah
// [-] (part1) https://example.org/43
function("string", 0);
// * * * /
// 20: blah blah blah blah blah blah
// [NOTE] blah blah blah blah blah blah blah blah blah blah blah blah
// [-] https://example.org/62015
function("some_string", "string"); // (comment)
// 0301: blah blah blah blah blah blah
// [-] https://example.org/205
// function("string", false);
// 040: blah blah blah blah blah blah
// What is this?
// [-] https://example.org/58917
function("string", true);
// 050: blah blah blah blah blah blah
// [-] https://example.org/57226
function("string", false);
// 103: blah blah blah blah blah blah
// [-] https://example.org/53751
// function("string", false);
// 203: blah blah blah blah blah blah
// [WARNING] This may break
// [-] https://example.org/70082
function("string", false);
// 27: blah blah blah blah blah blah
// [-] https://example.org/57170
// function("string", 90); // default: 90
// 55: blah blah blah blah blah blah
// [-] https://example.org/73595
// function("string", true);
// * * * /
// ***/
function("string", 99); //comment comment

我找到的答案(比如这个)处理的是更简单的情况。

shell 脚本 - 如何删除文件中的所有注释? - Unix 和 Linux 堆栈交换如何从文件中删除所有注释?

我遇到的主要问题是我的各种正则表达式太贪婪,例​​如,选择从第一个/*到最后一个的所有内容*/。我没有尝试 Perl,因为我对它不熟悉。而且,不幸的是,我尝试过的工具并不支持我想要尝试的所有正则表达式语法。我不确定哪种简单工具最适合这项任务。

答案1

你用cpp -undef -P your_file.jsorcc -undef -E -P -xc your_file.js来实现这个目的。

如果您认为cpp工具cc不够“通用”,那么运气不好。他们确实应该如此。

相关内容