私がこのコードを持っているとしましょう:
some code 1
// @if (debug)
code to remove
// @endif
some code 2
// @if (debug)
code to remove
// @endif
some code 2
// @if (debug)
との間のすべてのコードを削除したい// @endif
。このために、 のインスタンスが 1 つしかない場合は機能するが、複数のインスタンスがある場合は機能しない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
またはこのような他のツールでどのように動作させることができるかについてのアイデアはありますか?