在bash脚本中将日志管道传输到csv

时间:2015-02-02 14:30:19

标签: bash csv ubuntu-14.04 pipeline

我对如何根据特定条件继续管理日志文件内容到csv文件的任务感到有些失落。 基本上,问题是这样的:

  

编写一个通过管道接收http日志(或任意.log文件)的脚本       输入,并输出每天每个网址点击次数的汇总csv。

     

示例:执行管道命令

cat access.log|some filter commands|./your_script > summary.csv
  

创建一个名为summary.csv的文本文件,其内容为:

     

"行动和道路。 2015-01-01,2015-01-02。 2015年1月3日

     

GET /index.php,34,53,65

     

POST / administrator,32,59,39

     

..."

     

等等。

我现在面临的问题是如何识别和执行管道输入命令的特定部分,并在将其输送到输出管道之前应用过滤器。 根据我所熟悉的,一系列命令参数(例如" cat"," gedit",">",&#34 ; |"等可能会起作用,但这会留下识别它们并将它们作为管道命令执行的问题,而不是一个接一个地执行。

我已经搜索得非常彻底,但是除了建议将管道命令分成单独的指令并逐个执行之外,还没有找到任何有用的东西。 如果任何人都可以提出一种更简单,更有效的方法来做这件事,或者就这一特定问题提出任何建议,我们将非常感激。提前致谢。

1 个答案:

答案 0 :(得分:2)

也许您需要tee命令。您可以使用它来“分叉管道”,这意味着输出 可以在特定管道输入命令之后创建文件。在查找错误时非常有用。 例如:

cat access.log | some filter commands | tee out01.txt \
| some other filter | tee ou02.txt | ./your_script > summary.csv

更多示例here