Mencari literal "> \" menggunakan ack-grep

9

Saya mencari garis yang benar-benar memiliki lebih dari karakter (a ">") diikuti oleh spasi diikuti oleh karakter backslash (a "\") yaitu, garis dengan ini:> \

Saya pikir melarikan diri akan memungkinkan ini, dan untuk yang lebih besar dari yang dilakukannya:

  $ ack-grep "\>"

mengembalikan baris yang memiliki ">" di dalamnya.

Tetapi ketika saya mencoba untuk melarikan diri dari backslash juga saya dapatkan:

  $ ack-grep "\> \\"

ack-grep: Regex tidak valid '\> \':
Trailing \ di regex m / \> /

Stephen Gornick
sumber

Jawaban:

6

Wow, saya sangat dekat ... kutipan tunggal:

$ ack-grep '\> \\'

Mengetahui hal ini setelah mengonfirmasi bahwa pertandingan regex saya valid menggunakan: http://regexpal.com/ dan kebetulan memiliki satu tanda kutip dari mencoba sesuatu yang lain.

Stephen Gornick
sumber
5

Ini juga berfungsi:

$ ack-grep '> \\'

dan begitu pula:

$ ack-grep "> \\\\"

Yang lebih besar dari tidak perlu melarikan diri.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
1

Untuk mencari string literal, gunakan opsi literal:

ack-grep --literal '> \'
Andre Miras
sumber
0

Harap dicatat bahwa masalah di sini bukan dengan ack tetapi dengan mengutip shell. Anda akan mengalami masalah ini dengan program apa pun yang Anda coba sampaikan "> \" sebagai argumen.

Andy Lester
sumber
Yup, seandainya saya tahu ini dulu: mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 Aturan emas dari Bourne shell mengutip segala hal lain yang mungkin diperlakukan dengan buruk oleh shell dilindungi oleh kutipan tunggal.
Stephen Gornick