grep表示不带其他字符串的字符串


Answers:


9

这可以使用带有负向后看的正则表达式解决(实验grep证明,如range 的注释所指出的那样):

$ grep -P '(?<!Mr )John Smith' file

由于支持只是实验性的,因此您可能需要使用perl

$ perl -nle 'print if /(?<!Mr )John Smith/' file

实验上grep支持:echo $string | grep -P '(?<!Mr )John Smith'
安排

@安排确实。谢谢,我将更新答案。
jcollado 2011年

6

您可以执行

command | grep 'John Smith' | grep -v 'Mr John Smith'

1
不错的主意,但如果线路有效,将无法正常工作John Smith Mr John Smith John Smith
罗恩(Ron)

1

要使用正则表达式,请使用^和$

grep "^John Smith$"

^是开头的匹配项,$是结尾的匹配项。

语法将根据您在哪个文件中搜索的内容而有所不同。

您可以对sed,grep,awk ...使用正则表达式。

bodhi@Ubuntu:~ cat file
Mr John Smith
John Smith
John
Smith

bodhi@Ubuntu:~ grep "^John Smith$" file
John Smith

OP并不要求字符串是其行中唯一的内容。
enzotib
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.