Text-Processing

如何使用常見的 Linux 命令行工具從 javascript 文件中刪除所有註釋?

  • December 16, 2018

我有一個非常需要註釋的 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 script - 如何從文件中刪除所有註釋?- Unix & Linux Stack Exchange如何從文件中刪除所有註釋?

我遇到的主要問題是我的各種正則表達式過於貪婪,例如,選擇從第一個/*到最後一個的所有內容*/。我沒有嘗試 Perl,因為我不熟悉它。而且,不幸的是,我嘗試過的工具並不支持我想嘗試的所有正則表達式語法。我不確定哪種簡單工具最適合這項任務。

你使用cpp -undef -P your_file.jsor cc -undef -E -P -xc your_file.js

如果您不認為cppcc不夠“常用”的工具,那麼運氣不好。他們真的應該是。

引用自:https://unix.stackexchange.com/questions/486284