Regex 如何删除包含一个必填词且必须包含一个可选词的行

Regex 如何删除包含一个必填词且必须包含一个可选词的行,regex,awk,grep,Regex,Awk,Grep,我需要grep的整行是匹配一个强制性的字,说“1月10日”,必须包含一个可选的字,说“Crit”,“警告” 等效的C表达式为:if(strstr(buf,Jan 10)和&(strstrstr(buf,Crit)| | str(buf,Warn))) 注意:尝试了几个几乎接近这个的答案,但仍然没有帮助我。我的日志文件将包含不同级别的Crit、Warn、Info和Debg。但我只想要暴击或警告,但日期应该是1月10日。grep“Jan 10”log|u file | egrep“暴击|警告” 希望

我需要grep的整行是匹配一个强制性的字,说“1月10日”,必须包含一个可选的字,说“Crit”,“警告”

等效的C表达式为:if(strstr(buf,Jan 10)和&(strstrstr(buf,Crit)| | str(buf,Warn)))

注意:尝试了几个几乎接近这个的答案,但仍然没有帮助我。我的日志文件将包含不同级别的Crit、Warn、Info和Debg。但我只想要暴击或警告,但日期应该是1月10日。

grep“Jan 10”log|u file | egrep“暴击|警告”

希望这有帮助。

grep“1月10日”日志文件“白鹭”暴击“警告”


希望这有帮助。

我想grep不是这里的最佳选择,因为regex不直接支持逻辑运算。对于这些东西,我更喜欢使用
awk
,它既是一种编程语言,也是regex的cmd工具

awk '/Jan 10/ && (/Crit/ || /Warn/)' your_text_file

我想grep不是这里的最佳选择,因为regex不直接支持逻辑运算。对于这些东西,我更喜欢使用
awk
,它既是一种编程语言,也是regex的cmd工具

awk '/Jan 10/ && (/Crit/ || /Warn/)' your_text_file
使用GNU grep:

grep 'Jan 10' file | grep -e 'Crit' -e 'Warn'
使用GNU grep:

grep 'Jan 10' file | grep -e 'Crit' -e 'Warn'

我认为awk在做逻辑运算方面非常棒。这似乎比格雷普更简单。太好了!也可以像这样使用grep来完成:我认为awk在做逻辑操作方面非常棒。这似乎比格雷普更简单。太好了!也可以使用grep这样做: