0

我有这样的文件:

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

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

4

2 回答 2

1

这是一个快速而肮脏的:

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

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

于 2013-05-02T15:24:47.017 回答
1

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

因此,在回答 OP 的“我做错了什么?”时,

  1. 您忘记将正则表达式放在单引号中;
  2. 您选择了错误类型的括号来包含替代表达式;最后
  3. 您忘记使用 egrep 或 -E 标志

总是更容易看到别人的错误;我希望我能很快发现自己的:-|

于 2013-05-02T15:32:38.097 回答