首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Bash shell运行Logparser

如何从Bash shell运行Logparser
EN

Stack Overflow用户
提问于 2012-06-20 19:00:35
回答 2查看 486关注 0票数 1

我在Windows box上打开一个git bash shell并运行

logparser "select date from testFile.log" -i:IISW3C -o:CSV

这是可行的。

但如果我用以下命令创建.sh文件

代码语言:javascript
复制
cmd_to_run='logparser "select date from testFile.log" -i:IISW3C -o:CSV'
$cmd_to_run

这不起作用,我得到logparser错误:

Error: detected extra argument ""select" after query

我只需要通过.sh脚本运行日志解析器。你能帮帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2012-07-02 02:04:43

首先,为什么不直接运行它呢?

转义查询中的空格,因为bash将其展开,并且您将获得logparser的位置参数,而不是保留的字符串。如果这不起作用,可以试试eval

为了说明这一点,这里有一个类似的wc示例:

代码语言:javascript
复制
$ wc -w <<< "select date from testFile.log"
4
$ cmd_to_run='wc -w <<< "select date from testFile.log"'
$ $cmd_to_run
wc: <<<: No such file or directory
wc: "select: No such file or directory
wc: date: No such file or directory
wc: from: No such file or directory
wc: testFile.log": No such file or directory
0 total
$ eval $cmd_to_run # quote as appropriate
4
票数 0
EN

Stack Overflow用户

发布于 2021-10-05 20:13:17

实际上,我已经做了很多年了。它使查询的可读性比从cmd提示符运行要好得多。下面是我在Cygwin Bash中运行的示例shell脚本。

dumpBiz_All_aspx.sh

代码语言:javascript
复制
#! /usr/bin/bash
# cd /cygdrive/c/apps/jsd/log_analysis
# . ./dumpBiz_All_aspx.sh
REPORT_NAME=all_aspx
ROOTDIR=D:\\_other\\access_log_analysis
LOGDIR=${ROOTDIR}\\new_server
LOGDATE=21*
SITE=mysite
DATE=`date +%y%m%d.%H%M%S`
OUTPUT_FILE=C:\\apps\\jsd\\log_analysis\\reports\\${SITE}_${REPORT_NAME}_${DATE}.csv


SQL=$(cat <<-EOF
 SELECT To_Lowercase(cs-uri-stem) as Res, cs-method as Method, COUNT(*) as Hits 
 INTO ${OUTPUT_FILE}
 FROM ${LOGDIR}\\u_ex${LOGDATE}.log
 WHERE Res LIKE '%.aspx'
    AND sc-status = 200
    AND cs-host > ''
    AND cs-host NOT LIKE '192%'
    AND Res LIKE '/${SITE}/%'
 GROUP BY Res, cs-method
 ORDER BY Hits DESC
EOF
)

echo SQL = $SQL
echo

cat << EOF | sh
 LogParser -i:IISW3C "${SQL}" -o:CSV
EOF


echo Launching $OUTPUT_FILE ...

cmd.exe /c start ${OUTPUT_FILE}

输出:

代码语言:javascript
复制
SQL = SELECT To_Lowercase(cs-uri-stem) as Res, cs-method as Method, COUNT(*) as Hits INTO C:\apps\jsd\log_analysis\reports\mysite_all_aspx_211005.155939.csv FROM D:\_other\access_log_analysis\new_server\u_ex21*.log WHERE Res LIKE '%.aspx' AND sc-status = 200 AND cs-host > '' AND cs-host NOT LIKE '192%' AND Res LIKE '/backoffice/%' GROUP BY Res, cs-method ORDER BY Hits DESC

Statistics:
-----------
Elements processed: 55780063
Elements output:    167
Execution time:     240.30 seconds (00:04:0.30)

Launching report: mysite_all_aspx_20211005.155442.csv ...

这将生成一个类似mysite_all_aspx_20211005.155442.csv的文件,并在默认的csv阅读器(如Excel)中打开。

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

https://stackoverflow.com/questions/11118122

复制
相关文章

相似问题

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