Regex 插入符号不适用于grep

Regex 插入符号不适用于grep,regex,linux,ubuntu,Regex,Linux,Ubuntu,这行不通 grep -h '^zip' log* 这很有效 grep -h '[^bg]zip' log* log*文件肯定包含一个名为zip的文件,因为第二个命令会打印出文件名。但第一个根本不打印任何内容。我试了几次,发现插入符号只在括号中起否定的作用。在括号之外,它并不意味着它后面的某个词会出现在单词的开头。 这里怎么了?我正在使用ubuntu 12.4 词首 ^标记行的开头,而不是单词的开头“foo-zip”将与^zip不匹配,但“zip-foo”将匹配。如果要在单词开头匹配zip,请

这行不通

grep -h '^zip' log*
这很有效

grep -h '[^bg]zip' log*
log*文件肯定包含一个名为
zip
的文件,因为第二个命令会打印出文件名。但第一个根本不打印任何内容。我试了几次,发现插入符号只在括号中起否定的作用。在括号之外,它并不意味着它后面的某个词会出现在单词的开头。 这里怎么了?我正在使用ubuntu 12.4

词首

^
标记行的开头,而不是单词的开头<代码>“foo-zip”将与
^zip
不匹配,但
“zip-foo”
将匹配。如果要在单词开头匹配
zip
,请使用以下命令:

grep \\bzip

\b
标记一个单词边界,但您需要在转义符上加倍,因为您的shell将去掉一个。(
grep'\bzip'
也可以使用。)

您使用的是什么版本的grep?$grep——grep(gnugrep)2.10版对我来说适用于您正在做的事情。它与grep没有任何问题。只是我误解了板条箱的工作原理。我认为它表明了在一个词的开头应该是什么