Wyszukiwanie dosłownego „> \” za pomocą ack-grep

9

Szukam linii, które dosłownie mają większy niż znak („>”), po których następuje spacja, po której następuje znak odwrotnego ukośnika („\”), tj. Linia z tym:> \

Myślałem, że ucieczka pozwoli na to, a na więcej niż to:

  $ ack-grep "\>"

zwraca wiersze, które zawierają „>”.

Ale kiedy próbuję również uciec z ukośnikiem, dostaję:

  $ ack-grep "\> \\"

ack-grep: Invalid regex '\> \':
Trailing \ in regex m / \> /

Stephen Gornick
źródło

Odpowiedzi:

6

Wow, byłem tak blisko ... pojedyncze cytaty:

$ ack-grep '\> \\'

Zrozumiałem to po potwierdzeniu, że moje dopasowanie wyrażenia regularnego było prawidłowe przy użyciu: http://regexpal.com/ i akurat miałem pojedyncze cytaty z wypróbowania czegoś innego.

Stephen Gornick
źródło
5

Działa to również:

$ ack-grep '> \\'

podobnie jak:

$ ack-grep "> \\\\"

Większe niż nie trzeba uciekać.

Wstrzymano do odwołania.
źródło
1

Aby wyszukać dosłowne ciągi znaków, użyj opcji dosłownej:

ack-grep --literal '> \'
Andre Miras
źródło
0

Pamiętaj, że tutaj nie chodzi o potwierdzenie, ale o cytowanie powłoki. Miałbyś ten problem z każdym programem, który próbujesz przekazać jako argument „> \”.

Andy Lester
źródło
Tak, gdybym wiedział pierwszy: mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 Złote zasady cytowania powłoki Bourne'a Wszystko inne, co może być maltretowane przez powłokę, chronione jest przez pojedyncze cytaty.
Stephen Gornick