我如何“grep”匹配正则表达式的最长行链

Pal*_*han 0 awk grep sed

我正在运行一个输出这样的行的程序(简化):

A
E
E
R
E
Run Code Online (Sandbox Code Playgroud)

等等......而且我试图找到字母代码 E 的最长出现时间,中间没有其他东西。我怀疑最简单的方法是尝试连续查找 N,其中我尝试 N 的几个降序值,但我不确定如何处理特定情况,例如 3 个连续的 E 行。使用 sed 命令容易吗?我想到了 awk 模式范围,但它允许介于两者之间的任何内容。

kar*_*kfa 5

使用现有的 Unix 工具集...

uniq -c file | sort -k2 -k1,1nr | awk '/E/{print $1;exit}'
Run Code Online (Sandbox Code Playgroud)

uniq将按sort名称和计数(按相反顺序)为您提供序列计数,以便最高运行计数将出现在顶部。让我们awk选择最高的序列长度,这是设计的第一个。