grep 某种格式,这可能吗?

grep 某种格式,这可能吗?

我试图在一个巨大的数据包捕获文件中找到某个未知的 11 个字符序列。我确实知道的一件事是我正在查找的字符串具有 format x.x-xxxxxxx。我一直在寻找一段时间,但找不到正确的 grep 语句来完成此任务,有人可以帮忙吗?

答案1

其格式grep就是我们所说的“POSIX 正则表达式”(查找),它支持一些简单的匹配原语。如果您知道只需要字母数字字符,则可以使用如下字符类:[a-zA-Z0-9]grep甚至有这个特定类的快捷方式(因为它非常有用),如下所示:[[:alnum:]]man grep有很多相关信息。

您还可以使用重复计数来指定要匹配的字符数量。在您的情况下,您想要匹配:1 个字母数字字符,然后是一个句点,然后是一个字符,然后是一个破折号,后跟 7 个字符。在 POSIX 正则表达式中,这看起来像这样:

[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}

笔记:

  1. 我必须用反斜杠转义句点,否则它将被解析为“捕获所有字符”正则表达式。
  2. 为了使重复子句(花括号)起作用,您需要使用-e或运行egrep而不是标准的grep.

所以完整的命令可能如下所示:

egrep '[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}' /some/file

输出将是该表达式匹配的行,可能以颜色突出显示(取决于您的终端)。如果您的数据包文件不是行分隔的(可能是二进制的),则屏幕上会出现很多混乱。

相关内容