2017-04-05 69 views
0

而且我一直以爲是+ 1以上,*爲0或更多...grep的不grepping

echo sample text | grep --color s*e\b 
echo sample text | grep --color s+e\b 

兩個版本不斂字樣品

+0

嘗試'grep --color -P's。*?e'' –

+0

嘗試'grep --color -E's * e \ n'' – Jiahao

+0

@PS工作但是我必須使用Perl嗎? :/ – PUG

回答

2

使用星號或加號是一個乘數。

此外,您需要更好地用單引號括起grep模式。

你的情況,這會工作:

grep --color 's.*e\b' 

Asterisk是乘點S =任何字符之後,於是有了上面的命令你問的grep爲您帶來先從s加上任何其他字符的文本(. )多次(*)加上一個e和所有這一切由一個單詞bourgary \b分開。

您的初始命令grep --color 's*e\b'將匹配具有字母s多次(*)的單詞。例如,你會趕上ssssse字波紋管:

echo "ssssse text" | grep --color 's*e\b' 

還有其他的方法也做這個工作。

+0

偉大的,但我不明白爲什麼這是工作: 回聲示例文本| grep --color's。* e \ b' 而這不是: echo示例文本| grep --color s。* e \ b – PUG

+0

@PUG手冊中的grep頁面描述了要匹配的模式必須用單引號括起來,不用引用模式,結果可能是錯誤的(正如您在測試)。 –