web-dev-qa-db-ja.com

ack-grepを使用してリテラル "> \"を検索する

文字通り大なり記号(a ">")、スペース、バックスラッシュ文字( "\")が続く行、つまり次のような行を探しています:> \

私は、エスケープすることでこれが可能になると思いました。

 $ ack-grep "\>" 

">"が含まれている行を返します。

しかし、バックスラッシュもエスケープしようとすると、次のようになります。

 $ ack-grep "\> \\" 

ack-grep:無効な正規表現 '\> \':
正規表現m/\> /の末尾の\

9
Stephen Gornick

うわー、私はとても近かった...一重引用符:

$ ack-grep '\> \\'

http://regexpal.com/ を使用して、正規表現の一致が有効であることを確認した後、これを理解しました。たまたま、他のことを試みたときに一重引用符がありました。

6
Stephen Gornick

これも機能します:

$ ack-grep '> \\'

そしてそうします:

$ ack-grep "> \\\\"

大なり記号をエスケープする必要はありません。

リテラル文字列を検索するには、リテラルオプションを使用します。

ack-grep --literal '> \'
1
Andre Miras

ここでの問題はackではなく、Shellの引用にあることに注意してください。引数として "> \"を渡そうとしたプログラムでは、この問題が発生します。

0
Andy Lester