如果已知的搜索字符很少,如何从文件中单独查找一个单词
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!从字面上看:)我已经编辑了答案。非常感谢,我没有意识到。以上是关于如果已知的搜索字符很少,如何从文件中单独查找一个单词的主要内容,如果未能解决你的问题,请参考以下文章