2013-05-02 1 views
0

У меня есть такой файл:Использование Grep для поиска строк на самого начало строки или после разделителя в Git Bash для Windows,

blue|1|red|2 
green|3|blue|4 
darkblue|0|yellow|3 

Я хочу использовать Grep, чтобы найти что-нибудь с указанной blue| в начале строки или |blue| где угодно, но не любой darkblue| или |darkblue| или |blueberry|

Я пытался использовать grep [^|\|]blue\| но Git Bash дает мне ошибку:

$ grep [^|\|]blue\| *.* 
grep: Unmatched [ or [^ 
sh.exe": |]blue|: command not found 

Что я сделал не так? Каков правильный способ сделать это?

ответ

1

Вот быстрый & грязный:

grep -E '(^|\|)blue\|' * 

Похожее начало строки или |, а затем blue|. Важно отметить, что вам нужны расширенные регулярные выражения (через egrep или флаг -E), чтобы использовать конструкцию | (или).

+0

Это работает! Итак -E и обычные скобки. Спасибо. – ericcire

1

Также обратите внимание на одинарные кавычки вокруг регулярного выражения.

Так, в ответ на ОП в «Что я сделал неправильно»,

  1. Вы забыли поставить регулярное выражение в одинарные кавычки;
  2. Вы выбрали неправильный тип скобок, чтобы заключить альтернативные выражения; и, наконец,
  3. Вы забыли использовать или задать расширенный флаг -E

Всегда легче видеть ошибки других людей; Хотелось бы, чтобы я быстро заметил свои собственные: - |

+0

также цитаты ... да – ericcire