假设我有这个代码:
some code 1
// @if (debug)
code to remove
// @endif
some code 2
// @if (debug)
code to remove
// @endif
some code 2
我想删除 和 之间的所有// @if (debug)
代码// @endif
。为此,我找到了一个sed
命令,如果只有一个实例,则该命令有效,// @if (debug)
但如果有多个,则无效,因为sed
不支持非贪婪匹配(因此,在上面的示例中,也删除了some code 2
)。这是命令:
sed -r -n '1h;1!H;${;g;s/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g;p;}' file_path.js > file_path.min.js
我读过我可以使用perl
它支持非贪婪匹配,但我无法让它工作。这是一个尝试:
perl -pe 's/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g' file_path.js > file_path.min.js
perl -0pe 's/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g' file_path.js > file_path.min.js
perl -0777 -pe 's/\/\/\s*@if\s*\(\s*debug\s*\)([^\0]*?)\/\/\s*@endif//g' file_path.js > file_path.min.js
关于如何使它与或任何其他类似工具一起使用的任何sed
想法perl
?