1

私がこのコードを持っているとしましょう:

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)sedsome 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

sedperlまたはこのような他のツールでどのように動作させることができるかについてのアイデアはありますか?

4

2 に答える 2

5

使用sed:

$ sed '/^\/\/ @if (debug)/,/^\/\/ @endif/d' inputfile
some code 1


some code 2


some code 2
于 2013-09-09T06:17:34.520 に答える