是否有一种方法使grep从匹配搜索表达式的文件中输出“单词”?

如果我想在一些文件中找到“th”的所有实例,我可以这样做:

grep "th" *

但是输出会是这样的(粗体是我的);

some-text-file : the cat sat on the mat  
some-other-text-file : the quick brown fox  
yet-another-text-file : i hope this explains it thoroughly 

我想让它输出什么,使用相同的搜索,是:

the
the
the
this
thoroughly

这可能使用grep吗?或者使用另一种工具组合?


当前回答

只需awk,不需要组合工具。

# awk '{for(i=1;i<=NF;i++){if($i~/^th/){print $i}}}' file
the
the
the
this
thoroughly

其他回答

只需awk,不需要组合工具。

# awk '{for(i=1;i<=NF;i++){if($i~/^th/){print $i}}}' file
the
the
the
this
thoroughly

Grep命令只与perl匹配

grep -o -P 'th.*? ' filename

要搜索所有以“icon-”开头的单词,下面的命令非常有效。我在这里使用的是Ack,它类似于grep,但有更好的选项和良好的格式。

ack -oh --type=html "\w*icon-\w*" | sort | uniq

ripgrep

下面是使用ripgrep的示例:

rg -o "(\w+)?th(\w+)?"

它会匹配所有与th匹配的单词。

你可以像这样将你的grep输出管道到Perl中:

grep "th" * | perl -n -e'while(/(\w*th\w*)/g) {print "$1\n"}'