我尝试使用grep
来匹配包含两个不同字符串的行。我尝试了以下方法,但这匹配包含string1 或 string2的行,这不是我想要的。
grep 'string1\|string2' filename
那么,如何仅使用grep
匹配包含这两个字符串的行呢
发布于 2010-12-20 14:16:52
您可以使用
grep 'string1' filename | grep 'string2'
或
grep 'string1.*string2\|string2.*string1' filename
发布于 2012-11-20 16:17:25
我想这就是你要找的:
grep -E "string1|string2" filename
我认为答案是这样的:
grep 'string1.*string2\|string2.*string1' filename
只匹配两个都存在的情况,而不是一个或另一个或两者都存在。
发布于 2013-12-26 17:53:28
要在任意位置搜索包含所有单词的文件,请执行以下操作:
grep -ril \'action\' | xargs grep -il \'model\' | xargs grep -il \'view_type\'
第一个grep启动递归搜索(r
),忽略大小写(i
),并列出(打印出)与文件中任意位置出现的一个术语(带有单引号的'action'
)匹配(l
)的文件名。
随后的greps搜索其他术语,保留不区分大小写,并列出匹配的文件。
您将获得的最终文件列表将是包含这些术语的文件,在文件中的任何位置都可以按任意顺序排列。
https://stackoverflow.com/questions/4487328
复制相似问题