Grep 并计算匹配行数

Grep 并计算匹配行数

我有一个相当复杂的 grep 和 awk 模式,用于从日志文件中获取报告。我工作得很好,生成了一个漂亮的 light-HTML 表格,通过电子邮件发送给需要它的人。

我想为每个部分(每个 grep)添加该部分中元素的计数。

grep -c 没有帮助,因为它仅有的返回一个计数,我不想在每个部分的每个日志文件之前运行 grep 两次。

一切都在 bash 脚本内运行,该脚本还生成 HTML。我可以使用 CSS 对行进行编号,但获得总计数会很棒。

grep/awk 有几行长,最后是生成 html 的 awk:

 ...| awk '{print "<tr><td class=\"rightq\"> \
 <a href=\"mailto:[email protected]?Subject=\ 
 "ENVIRON["DAY"]"%20"$1"&Body="ENVIRON["aBODY"]"\">" \
 $1"</a></td><td class=\"rightz\">"$2"</td><td>"$4"</td></tr>"}'

答案1

尝试

... | awk '{ print "..." ; c++} 
  END { printf "<tr><th>%d lines</th>...</tr>",c}' 

在哪里

  • c将计算行数(我假设 grep 发生在管道之前)
  • END是一个特殊的 awk 语句 run ..ath 结束。

相关内容