我想在Unix中的一个文件中搜索一个单词,该单词应该只返回不是整行的单词。
例如:
Sample.text:
Hello abc hi aeabcft 123abc OK
预期产量: ABC aeabcft 123ABC
如果我使用grep在文件Sample.txt中搜索abc,它将返回完整行,但我想要包含abc的单词
答案 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
建议,因为它更短更清晰。