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

Posted

技术标签:

【中文标题】如果已知的搜索字符很少,如何从文件中单独查找一个单词【英文标题】:How to grep for a word alone from a file if few search characters are known 【发布时间】:2016-05-15 06:21:48 【问题描述】:

如果我知道的搜索字符很少,如何仅从文件中获取单词?

我的文件内容:

This is a sample file 
to fetch particular word
if I have a search characters known.

例如,如果我的搜索模式是 "SAM" ,则预期输出是 sample

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

【问题讨论】:

grep -oP 'sam\w*' file 【参考方案1】:

你可以试试:

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

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

取决于你想要什么。

【讨论】:

他们不是在找词吗?这将包括除了空格之外的几乎所有字符,例如sam*&^%%&^%$^$ӝõ࠹4 @123 破解 cmets 的方法! @123 你是怎么在你的名字后面加上࠹4 –的? :-) @Kent 不知道,只是在输入 unicode 字符。不过似乎只适用于数字。我想可以查看源代码。 @123 我检查了源代码,你的 unicode 字符在 <code> 块中,包括 4[]【参考方案2】:

你也可以用 awk 做到这一点:

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

使用RS,我将分隔符设置为任何非字母数字字符(根据 Ed Morton 的 cmets 提示),然后每个循环将包含一个单词。最后,我们在正则表达式中过滤我们想要的模式,然后......瞧

【讨论】:

谢谢,@TomFenech。现在我添加了一点解释。 :) 在搜索known 时会错误地输出known.(注意尾随句点)。要使这种方法起作用,您必须将 RS 设置为 RS="[^[:alpha:]]" 之类的东西(取决于 OP 对“单词”的定义),但它依赖于 gawk。 好点,@EdMorton!从字面上看:)我已经编辑了答案。非常感谢,我没有意识到。

以上是关于如果已知的搜索字符很少,如何从文件中单独查找一个单词的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch搜索引擎

如何在文本文件c#中的字符串已知值之后查找和获取字符串

linux查找文件

Linux shell中在vi打开的文件中查找关键字

从具有单独行的字符串的文本中查找重新排列的字符串组

vim 单文件中查找方法