首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从日志文件创建.html文件

从日志文件创建.html文件
EN

Stack Overflow用户
提问于 2013-09-25 04:10:08
回答 3查看 6.7K关注 0票数 2

我需要一个脚本,将日志文件转换为易于查看的.html文件,可由“任何人”访问。

这是我到目前为止所知道的:

代码语言:javascript
复制
#!/bin/bash

## The purpose of this script is to create .html files from log files, with the ability to optionally GREP for certain strings

if [ "$2" == "" ];
then
        echo "Usage : $0 [Source Log file] [Output HTML file] [String to grep (if applicable)]"
        exit 255
fi;

LOGFILE=$1
OUTPUTFILE=$2
GREPSTRING=$3

if [ "$3" == "" ];
then
        echo "Cat'ing $LOGFILE to $OUTPUTFILE"
        LOGCONTENTS=`cat $LOGFILE`

else
        echo "Grep'ing for $GREPSTRING in $LOGFILE"
        LOGCONTENTS=`grep --color $GREPSTRING $LOGFILE | sed -e "s/^.*$/&1\n/"`
fi;

# Below is the html heading which will be appended to the final .html file
HEADING="<html><body><h1>Log output for: $LOGFILE</h1>"

# Below is the end of the html file
END="</body></html>"

# Below all the prepared variables are stitched together to the OUTPUT/LOG FILE
echo $HEADING > $OUTPUTFILE
echo $LOGCONTENTS >> $OUTPUTFILE
echo $END >> $OUTPUTFILE


# For debugging, enable the lines below
echo $LOGCONTENTS
echo "Done preparing $OUTPUTFILE"

我的问题是,无论我使用多少CAT、GREP、SED等命令,输出都不会保留换行符。输出文件在执行正常的尾部-f或cat时,看起来或多或少与之类似是很重要的。

EN

回答 3

Stack Overflow用户

发布于 2013-09-25 04:34:23

这里有一个重要的重构,而不是将内容复制到变量中(然后错误引用它们)。

代码语言:javascript
复制
#!/bin/sh
exec >"$2"
cat <<HERE
<html><body><h1>Log output for: $1</h1>
<pre>
HERE
grep "${3:-^}" "$1"
echo '</pre></body></html>'

因为超文本标记语言不能显示终端颜色代码,所以我去掉了--color选项。如果你有一个合适的过滤器来转换成HTML颜色标签,那么一定要把它扔进去。

还要注意,如果不提供第三个命令行参数,正则表达式将缺省为匹配所有行的一个。

许多浏览器会将单独的开始<pre>标记呈现为一个不吸引人的空行,但在这里几乎不需要解决这个问题。如果它困扰你,那就把它分解成一个单独的echo -n '<pre>'

票数 4
EN

Stack Overflow用户

发布于 2013-09-25 04:21:03

由于您要使用HTML语言,因此需要将换行符(使用sed或其他语言)替换为<br/> ( HTML换行符)。HTML通常会忽略自由流动文本中的CR/LF字符。

所以你可以使用sed,如下所示。我移除了1,因为没有解释它们的用途,但如果需要,您可以将它们放回原处。

代码语言:javascript
复制
if [ "$3" == "" ];
then
        echo "Cat'ing $LOGFILE to $OUTPUTFILE"
        LOGCONTENTS=`sed -e "s/^.*$/&<br\/>/" $LOGFILE`

else
        echo "Grep'ing for $GREPSTRING in $LOGFILE"
        LOGCONTENTS=`grep --color $GREPSTRING $LOGFILE | sed -e "s/^.*$/&<br\/>/"`
fi;
票数 2
EN

Stack Overflow用户

发布于 2018-08-18 17:17:07

您可以使用ccat来实现此目的。

如果你使用的是Ubuntu,首先使用install,然后将日志文件转换为html文件,如下所示。

代码语言:javascript
复制
ccat check_valgrind_log.log --html > check_valgrind_log.html

我使用这个包将valgrind日志转换为html文件,它提供了一个漂亮的彩色输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18991126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档