我有一个相当复杂的 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 结束。