regex - Grep 正则表达式不包含字符串

标签 regex grep

我将正则表达式模式列表传递给 grep 以检查系统日志文件。它们通常匹配 IP 地址和日志条目;

grep "1\.2\.3\.4.*Has exploded" syslog.log

这只是一个模式列表,例如我在循环中传递的“1\.2\.3\.4.*已爆炸”部分,因此我无法通过“例如,-v”。

我很困惑尝试执行与上述相反的操作,并且匹配具有特定IP地址和错误的行,因此“!1.2.3.4.*Hasexploded”将匹配任何内容的系统日志行除了 1.2.3.4 告诉我它已经爆炸了。我必须能够包含一个匹配的 IP 地址。

我在 Stack Overflow 上看到过各种类似的帖子。然而,它们使用了我似乎无法使用 grep 的正则表达式模式。 grep 的工作示例是什么?

这发生在这样的脚本中;

patterns[1]="1\.2\.3\.4.*Has exploded"
patterns[2]="5\.6\.7\.8.*Has died"
patterns[3]="\!9\.10\.11\.12.*Has exploded"

for i in {1..3}
do
  grep "${patterns[$i]}" logfile.log
done

最佳答案

grep 匹配,grep -v 则相反。如果您需要“匹配 A 但不匹配 B”,您通常使用管道:

grep "${PATT}" file | grep -v "${NOTPATT}"

关于regex - Grep 正则表达式不包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411616/

相关文章:

linux - 需要在 wsdl - grep/awk/sed 上匹配确切的句子

java - Java中自动转述句子

c# - 在 C# 中使用正则表达式从完整路径解析文件名

javascript - 如何使用变量值作为正则表达式模式

c - 参数列表是否将字符串引号传递给 C 中的 exec 命令?

regex - 如何 grep 一个特定的模式

javascript - 当以不允许的字符开始时,使用正则表达式仅允许 HTML 输入字段中的某些字符似乎不起作用

java - 如何优化此正则表达式以在空格和标点符号(减去撇号)上拆分行

regex - grep - 显示匹配行的两部分

bash - 如何使用 bash 从 wttr.in curl 结果中获取当前平均温度?