2
4

1 に答える 1

1

-Eフラグと*ワイルドカードがないと、'<?'パターンは意図したとおりに一致して機能し、その後、逆にパイプすることができます。-i大文字と小文字を区別しないフラグも追加することをお勧めします。

grep -ir '<?' * | grep -iv '<?php' >> /phptags.txt

それ以外の場合、あなたの試みでは、これが起こります: <?*拡張正規表現が最初に一致する<ため、これ?はオプションになり、その後に*「先行する式のゼロ以上」を意味します。したがって、実際には、これはで始まる、またはで始まらない<?ものすべてに一致するため、すべてに一致します。

基本モード(ではない-E)に切り替えると、<?文字通り一致します。-v <?phpそれらを削除するために文字通り一致する逆にそれをパイプします。

于 2012-07-16T21:46:27.800 に答える