
私は、大なり記号 (「>」) の後にスペース、その後にバックスラッシュ記号 (「\」) が続く行、つまり次のような行を探しています: > \
エスケープによってこれが可能になると考えましたが、greater-than の場合は次のようになります。
$ ack-grep "\> "
"> " が含まれる行を返します。
しかし、バックスラッシュもエスケープしようとすると、次のようになります:
$ ack-grep "\> \\"
ack-grep: 無効な正規表現 '\> \':
正規表現 m/\> / の末尾の \
答え1
うわー、とても近かったのに...一重引用符:
$ ack-grep '\> \\'
以下を使用して正規表現の一致が有効であることを確認した後、これを理解しました。 翻訳元 たまたま他の何かを試してみたところ、一重引用符が付いてしまいました。
答え2
これも機能します:
$ ack-grep '> \\'
そして以下も同様です:
$ ack-grep "> \\\\"
大なりをエスケープする必要はありません。
答え3
リテラル文字列を検索するには、リテラル オプションを使用します。
ack-grep --literal '> \'
答え4
ここでの問題は ack ではなく、シェルの引用にあることに注意してください。引数として "> \" を渡そうとするプログラムでは、必ずこの問題が発生します。