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

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

私は、大なり記号 (「>」) の後にスペース、その後にバックスラッシュ記号 (「\」) が続く行、つまり次のような行を探しています: > \

エスケープによってこれが可能になると考えましたが、greater-than の場合は次のようになります。

  $ ack-grep "\> "

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

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

  $ ack-grep "\> \\"

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

答え1

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

$ ack-grep '\> \\'

以下を使用して正規表現の一致が有効であることを確認した後、これを理解しました。 翻訳元 たまたま他の何かを試してみたところ、一重引用符が付いてしまいました。

答え2

これも機能します:

$ ack-grep '> \\'

そして以下も同様です:

$ ack-grep "> \\\\"

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

答え3

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

ack-grep --literal '> \'

答え4

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

関連情報