如何获得匹配的单词,而不是一行

问题描述:

我们可以使用grep来返回匹配单词的行,但是如何才能返回单词? 说有:如何获得匹配的单词,而不是一行

The original MC68000 was fabricated using 

如何返回MC68000

这似乎是一个经常被问到的问题。 GNU grep有这个-o(显示匹配only不是整条线)。这在Single Unix Specification中没有描述。

+0

我不知道这是他在问什么。我明白他希望返回3场,而不是过滤。 – gdoron 2012-03-28 21:07:41

+1

似乎很清楚,例如'grep -E -o'MC68 [0-9] +''将与'MC68000'相匹配,只显示那个,而不是整行。看起来demaxSH接受了答案。 – Kaz 2012-03-28 21:22:12

用sed:

grep "myword" myfile | sed "s/.*\(myword\).*/\1/" 
+1

这是最符合标准的答案,因为它不依赖于GNU扩展。但是,由于您可以在sed中执行所有操作,所以它对grep没有任何用处。'sed -n -e's /.* \(myword \)。*/\ 1 /'-e'/ myword/p “'。 '-n'停止响应每一行,所以你用'p'打印你想要的东西(最后一个字母“grep”)。 – Kaz 2012-03-28 21:26:18