搜索/提取特定单词而不是unix中的完整行

时间:2014-08-10 16:34:58

标签: shell unix

我想在Unix中的一个文件中搜索一个单词,该单词应该只返回不是整行的单词。

例如:

Sample.text:

Hello abc hi aeabcft 123abc OK

预期产量:    ABC    aeabcft    123ABC

如果我使用grep在文件Sample.txt中搜索abc,它将返回完整行,但我想要包含abc的单词

2 个答案:

答案 0 :(得分:2)

您可以将grep -Eo与增强的正则表达式一起使用来搜索所有匹配的单词

grep -Eo '\b[[:alnum:]]*abc[[:alnum:]]*\b' Sample.text
abc
aeabcft
123abc

根据man grep

  

-o, --only-matching
       Prints only the matching part of the lines.

答案 1 :(得分:1)

如果您还需要对grep无法完成的文件进行其他处理,您可以使用Awk仅打印该行上的正则表达式匹配。

awk -v r="abc" '{m=match($0,r,a)}m{print a[0]}' file

否则我只会使用 anubhava grep -o建议,因为它更短更清晰。