为了账号安全,请及时绑定邮箱和手机立即绑定

用grep在一行中匹配两个字符串

/ 猿问

用grep在一行中匹配两个字符串

慕码人8056858 2019-12-10 09:41:37

我试图用来grep匹配包含两个不同字符串的行。我尝试了以下内容,但是这匹配包含string1 或 string2的行,而不是我想要的行。


grep 'string1\|string2' filename

那么,如何grep只与包含两个字符串的行匹配?


查看完整描述

3 回答

?
慕慕森

您可以使用 grep 'string1' filename | grep 'string2'


要么, grep 'string1.*string2\|string2.*string1' filename


查看完整回答
反对 回复 2019-12-10
?
大话西游666

我认为这是您想要的:


grep -E "string1|string2" filename

我认为这样的答案:


grep 'string1.*string2\|string2.*string1' filename

仅与同时存在两者而不是其中一个或两者都存在的情况匹配。


查看完整回答
反对 回复 2019-12-10
?
慕标5265247

要在任何位置搜索包含所有单词的文件,且顺序不限:


grep -ril \'action\' | xargs grep -il \'model\' | xargs grep -il \'view_type\'

第一个grep开始进行递归搜索(r),忽略大小写(i)并列出(打印出)与(l)匹配的文件名称,该名称与文件中'action'任何位置出现的一个词(带单引号)相同。


后续的搜索将搜索其他术语,从而保持不区分大小写并列出匹配的文件。


您将获得的文件的最终列表将是包含这些术语的文件的列表,文件中任何位置的顺序都可以。


查看完整回答
反对 回复 2019-12-10

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信