【发布时间】:2010-10-19 12:06:49
【问题描述】:
我想解析一个日志文件 (log.txt),其中包含与以下类似的行:
2010-10-19 07:56:14 URL:http://www.website.com/page.php?ID=26 [13676] -> "www.website.com/page.php?ID=26" [1]
2010-10-19 07:56:14 URL:http://www.website.com/page.php?ID=44 [14152] -> "www.website.com/page.php?ID=44" [1]
2010-10-19 07:56:14 URL:http://www.website.com/page.php?ID=13 [13681] -> "www.website.com/page.php?ID=13" [1]
2010-10-19 07:56:14 ERROR:Something bad happened
2010-10-19 07:56:14 ERROR:Something really bad happened
2010-10-19 07:56:15 URL:http://www.website.com/page.php?ID=14 [12627] -> "www.website.com/page.php?ID=14" [1]
2010-10-19 07:56:14 ERROR:Page not found
2010-10-19 07:56:15 URL:http://www.website.com/page.php?ID=29 [13694] -> "www.website.com/page.php?ID=29" [1]
你可能已经猜到了:
1) 我需要从每一行中提取这部分:
2010-10-19 07:56:15 URL:http://www.website.com/page.php?ID=29 [13694] -> "www.website.com/page.php?ID=29" [1]
------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2) 这部分转到另一个文件 (log.html),如下所示:
<a href="http://www.website.com/page.php?ID=29">http://www.website.com/page.php?ID=29</a>
我需要通过 bash 脚本执行此操作,该脚本将在 *nix 平台上运行。我对 shell 编程一无所知,因此非常感谢详细的脚本,指向 bash 编程参考的指针就可以了。
【问题讨论】:
-
Bash 不做正则表达式。使用 grep 查找匹配行,然后使用 awk 提取相关位。
标签: linux bash scripting shell