Regex 在Git Bash for Windows中,使用grep在行首或分隔符后查找字符串

Regex 在Git Bash for Windows中,使用grep在行首或分隔符后查找字符串,regex,grep,git-bash,Regex,Grep,Git Bash,我有这样的档案: blue|1|red|2 green|3|blue|4 darkblue|0|yellow|3 我想使用grep在行首或任何地方查找包含blue |的内容,但不查找任何darkblue |或| blueberry | 我试图使用grep[^ | \\124;]blue \,但Git Bash给了我错误: $ grep [^|\|]blue\| *.* grep: Unmatched [ or [^ sh.exe": |]blue|: command not found 我做

我有这样的档案:

blue|1|red|2
green|3|blue|4
darkblue|0|yellow|3
我想使用grep在行首或任何地方查找包含
blue |
的内容,但不查找任何
darkblue |
| blueberry |

我试图使用
grep[^ | \\124;]blue \
,但Git Bash给了我错误:

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

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

这里有一个快速而肮脏的方法:

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

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

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

那么,在回答OP的“我做错了什么?”

  • 您忘记将regexp放在单引号中
  • 您选择了错误类型的括号来括起备用表达式;最后
  • 您忘记使用egrep或-E标志
  • 看到别人的错误总是比较容易;我希望我能很快发现自己的:-|