使用grep搜索匹配的字符串,但搜索应仅显示字符串的其余部分,而不显示匹配的单词
我有一个不同的场景。我想说得更清楚一点 我有一个名为使用grep搜索匹配的字符串,但搜索应仅显示字符串的其余部分,而不显示匹配的单词,grep,Grep,我有一个不同的场景。我想说得更清楚一点 我有一个名为myfile的文件,其中包含以下信息: Saurav Kumar Sumeet Kumar Punit Kumar Sharma Supreet Prasad Sinha N. Senthil Kumar A. Salai Nayagan . . 等等 现在,如果我想获得包含Kumar的名称,我可以简单地使用: grep -i "kumar" myfile 所以它会像这样返回: Saurav Kumar S
myfile
的文件,其中包含以下信息:
Saurav Kumar
Sumeet Kumar
Punit Kumar Sharma
Supreet Prasad Sinha
N. Senthil Kumar
A. Salai Nayagan
.
.
等等
现在,如果我想获得包含Kumar
的名称,我可以简单地使用:
grep -i "kumar" myfile
所以它会像这样返回:
Saurav Kumar
Sumeet Kumar
Punit Kumar Sharma
N. Senthil Kumar
Saurav
Sumeet
Punit Sharma
N. Senthil
我不想在搜索结果中显示单词Kumar
。i、 e不带Kumar的搜索结果如下所示:
Saurav Kumar
Sumeet Kumar
Punit Kumar Sharma
N. Senthil Kumar
Saurav
Sumeet
Punit Sharma
N. Senthil
还有一件事,我必须只使用grep来获得结果,而不是像tr
、sed
、awk
等任何东西
我不知道我的问题标题是否合适。所以我要求改变它,使它更有意义
我将非常高兴得到解决方案
提前谢谢 使用
grep
无法完成您要查找的内容
您可以使用使用grep
匹配所需的文本部分,但我认为您无法获得所需格式的输出。比如说:
grep -P '\w+\b(?<!\bKumar)' yourinput
单词周围的星号**
表示匹配的单词
但是,如果您试图只打印匹配的单词,这些单词实际上不会在同一行中:
$ grep -oP '\w+\b(?<!\bKumar)' yourinput
Saurav
Sumeet
Punit
Sharma
Supreet
Prasad
Sinha
我可以稍微接近的结果与额外的新线路
grep -P -o -i '.*(?=kumar)|(?<=kumar).*' file | grep -v '^\s*$'
您可以使用负查找来匹配所需的部分,但是使用
grep
无法获得所需格式的输出。这就是问题所在。我提到的场景与实际问题相比根本不算什么。无论如何,我必须使用grep
,因为我使用的是选项——行缓冲
。虽然我会试试你的答案。希望它能起作用\既然您提到了--line buffered
,您有没有研究过stdbuf
?它只是grep
命令的一部分,也就是我想要的,并且正在使用--line buffered
。但另一个答案看起来更具体、更正确。我感谢你的努力。:)非常感谢。你几乎解决了这个问题。如果我多接一行也没关系。我检查过,只有当匹配词介于两者之间时才会发生。@SauravKumar很高兴它对你有用。你给了我一个很好的挑战!
Saurav
Sumeet
Punit
Sharma
N. Senthil