2013-06-21 63 views
1

我想替換文件夾中所有文件的/**/。我想:用空白空間替換/ ** /在Unix下

perl -pi -w -e 's/\/**\///g;' *.java 

但得到了一個錯誤:Nested quantifiers in regex; marked by <-- HERE in m//** <-- HERE // at -e line 1.

同樣的事情:

sed 's/\/**\///g;' 

我需要基本上以空白代替/**/

+0

關於[如何去除C風格評論](http://search.cpan.org/~dapm/perl-5.14.4/pod/perlfaq6.pod#How_do_I_use_a_regular_expression_to_strip_C-style_comments_from_a_file?)的'perlfaq6'條目可能證明有用 – mvp

回答

9

你也需要避開星號。爲了保持可讀性,您可能需要使用其他的分隔符,以及:

sed "s#/\*\*/##g" 
+0

我想你有1個額外的'|' – anubhava

+0

@anubhava:是的,謝謝。 – Blender

+0

我甚至不會提出第一個版本 - 很難看「鋸齒」。順便說一句,我喜歡逗號或散列作爲分隔符時,不使用斜槓 – Bohemian

1

可以指定*[]

perl -pi -w -e 's#/[*]{2}/# #g;' *.java 

或者,您可以利用quotemeta運營商:

perl -pi -w -e 's#\Q/**/\Q# #g;' *.java 

其中所有ASCII字符都不匹配/[A-Za-z_0-9]/