Regex 如果已知的搜索字符很少,如何从文件中单独搜索单词

Regex 如果已知的搜索字符很少,如何从文件中单独搜索单词,regex,awk,sed,grep,sh,Regex,Awk,Sed,Grep,Sh,如果已知的搜索字符很少,如何从文件中只提取单词 我的文件内容: This is a sample file to fetch particular word if I have a search characters known. 例如,如果我的搜索模式为“SAM”,则预期输出为sample 在grep-w选项中,我必须指定整个单词,并获取包含该单词的整行。您可以尝试: grep -o '\w*sam\w*' file 或 取决于您想要什么。您也可以使用awk: awk -v RS='[^

如果已知的搜索字符很少,如何从文件中只提取单词

我的文件内容:

This is a sample file 
to fetch particular word
if I have a search characters known.
例如,如果我的搜索模式为“SAM”,则预期输出为sample

在grep-w选项中,我必须指定整个单词,并获取包含该单词的整行。

您可以尝试:

grep -o '\w*sam\w*' file


取决于您想要什么。

您也可以使用awk:

awk -v RS='[^[:alpha:]]' '/sam/'

使用
RS
I将分隔符设置为任何非字母数字字符(根据Ed Morton的注释提示),然后每个循环将包含一个单词。最后,我们过滤正则表达式中需要的模式,然后。。。瞧,他们不是在找一个单词吗?这将包括除空格以外的几乎所有字符,例如
sam*&^%%&^%$^$$ӝõ࠹4
@123打断评论的方法@123您是如何制作
࠹4-
在您的名字后面?:-)@肯特不知道,只是在输入unicode字符。不过似乎只适用于数字。我想可以查一下源代码。@123我查过源代码,你的unicode字符在
块中,包括
4[]
谢谢@TomFenech。现在我添加了一点解释。:)搜索
known
时,这会错误地输出
known.
(注意尾随的句点)。为了使这种方法有效,您必须将RS设置为类似于
RS=“[^[:alpha:]]”
(取决于OPs对“单词”的定义),但这取决于gawk。这一点很好,@EdMorton!字面意思:)我已经编辑了答案。非常感谢,我不知道。
awk -v RS='[^[:alpha:]]' '/sam/'