Как не допустить путаницы сценария оболочки с помощью Ack PATTERN?

Я пытаюсь использовать ack для поиска (в файлах на Haskell) +|+

Я посмотрел на ack-grep: символы уходят, но это не помогает

В Mac OS X 10.6 я получаю следующие ответы:

$ ack -Q +|+
-bash: +: command not found
Missing option after +
ack: See ack --help, ack --help-types or ack --man for options

$ ack \+\|\+
Unknown option: |
ack: See ack --help, ack --help-types or ack --man for options

$ ack [+][|][+]
-bash: ][+]: command not found
ack: Invalid regex '[+][':
  Unmatched [ in regex; marked by <-- HERE in m/[+][ <-- HERE /

$ ack \Q+|+\E
-bash: +E: command not found

Это в основном все предложения в вопросах и ответах, перечисленных выше

2 ответа

Решение

Это должно работать как задумано:

$ ack "\+\|\+"

(Отредактировано, чтобы быть правильным в соответствии с вашими комментариями. Без кавычек "или".)

-Q процитирует все в вашей строке поиска.

ack --haskell -Q '+|+'

что проще чем

ack --haskell "\+\|\+"
Другие вопросы по тегам