使用grep在Git Bash for Windows的行开头或分隔符后查找字符串

时间:2013-05-02 15:21:25

标签: regex grep git-bash

我有这样的档案:

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

我做错了什么?这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

这是一个快速的&肮脏的一个:

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

匹配行首或|,后跟blue|。重要的一点是,您需要使用扩展正则表达式(通过egrep-E标志)来使用|(或)构造。

答案 1 :(得分:1)

另外,请注意正则表达式周围的单引号。

所以,回答OP的“我做错了什么?”,

  1. 你忘了把regexp放在单引号中;
  2. 您选择了错误的括号类型来包含替代表达式;最后
  3. 您忘记使用egrep或-E flag
  4. 看到其他人的错误总是比较容易;我希望我很快发现自己: - |