linux运行python日志文件,使用脚本(Linux、Windows或Python)从日志文件中提取特定信息...

@ECHO OFF

SETLOCAL

SET "sourcedir=U:\sourcedir"

SET "filename1=%sourcedir%\q40441783.txt"

:: occurrence count for KEYWORD_1,KEYWORD_2,KEYWORD_3

FOR %%k IN (KEYWORD_1 KEYWORD_2 KEYWORD_3) DO (

FOR /f "delims=" %%c IN ('type "%filename1%"^|FIND /c "%%k"') DO ECHO %%k : %%c times

)

:: Timestamp display for KEYWORD_1,KEYWORD_2,KEYWORD_3

FOR %%k IN (KEYWORD_1 KEYWORD_2 KEYWORD_3) DO (

type "%filename1%"|FIND "%%k"

)

:: remove variables starting $ or #

For %%b IN ($ #) DO FOR /F "delims==" %%a In ('set %%b 2^>Nul') DO SET "%%a="

:: action - WRITE(#)

FOR /f "usebackqtokens=1*delims=- " %%a IN ("%filename1%") DO (

REM interested in "pattern - WRITE(#) start/end"

FOR /f "tokens=1-3*delims=-()" %%A IN ("%%b") DO (

REM %%A is action, %%B "WRITE" %%C # %%D " start"/" end"

IF "%%B"==" WRITE" IF "%%D"==" start" SET "$%%C %%A$=%%a"

IF "%%B"==" WRITE" IF "%%D"==" end" SET "#%%C %%A#=%%a"

CALL :formatch&CALL :report "WRITE(%%C)"

)

)

SET $ 2>nul

SET # 2>nul

:: remove variables starting $ or #

For %%b IN ($ #) DO FOR /F "delims==" %%a In ('set %%b 2^>Nul') DO SET "%%a="

FOR /f "usebackqtokens=1*delims=- " %%a IN ("%filename1%") DO (

REM interested in "ACTION_A/ACTION_B elapsed time"

FOR /f "tokens=1*delims=- " %%A IN ("%%b") DO (

REM %%A is action, %%B remainder of line

IF "%%A"=="ACTION_A" SET "$1$=%%a"&SET "_actiona=%%B"

IF "%%A"=="ACTION_B" SET "#1#=%%a"

CALL :formatch

CALL :report "%%_actiona%% %%B"

)

)

SET $ 2>nul

SET # 2>nul

GOTO :EOF

:: See whether a $something$ AND a #something# exist and report if so

:formatch

SET "elapsed="

FOR /f "tokens=1,2delims=$=" %%m IN ('set $ 2^>nul') DO (

IF DEFINED #%%m# (

CALL :elapsed %%n %%#%%m#%%

SET "#%%m#="

SET "$%%m$="

)

)

GOTO :eof

:report

IF DEFINED elapsed ECHO %elapsed% %~1

GOTO :eof

:: get %2 - %1 both in HH:mm.ss.ttt format

:elapsed

FOR /f "tokens=1-4delims=:." %%w IN ("%2") DO (SET /a hh=2%%w&SET /a mm=2%%x&SET /a ss=2%%y&SET /a ttt=2%%z)

FOR /f "tokens=1-4delims=:." %%w IN ("%1") DO (SET /a hh-=1%%w&SET /a mm-=1%%x&SET /a ss-=1%%y&SET /a ttt-=1%%z)

:: compensate for "negatives"

IF %ttt% lss 1000 set/a ttt+=1000&set/a ss-=1

IF %ss% lss 100 set/a ss+=60&set/a mm-=1

IF %mm% lss 100 set/a mm+=60&set/a hh-=1

IF %hh% lss 100 set/a hh+=24

SET "elapsed=%hh:~-2%:%mm:~-2%:%ss:~-2%.%ttt:~-3%"

GOTO :eof

GOTO :eof

您需要更改sourcedir的设置以适合您的情况。

我使用了一个名为q40441783.txt的文件来进行测试,其中包含您的数据。在

有趣的练习。在

前两个步骤相当明显。我加入了KEYWORD_3,以确保为“未找到”生成正确的报告。请注意,您声明关键字“1”出现了2次。实际上,在你发布的数据中有3个。在

下一步需要一些解释。我要做的第一件事是确保没有以#或$开头的变量。在

下一步-分析每一行,首先在第一个-或空格上拆分,然后处理第一个分隔符序列标记在-()上的部分,以便标记如REM语句中所述。然后我们将变量$...$或#...#设置为%%a中的时间。...这是日志条目的唯一部分-编号和操作。然后检查同一个$...$和{},如果是,清除$#...$#变量,计算运行时间,重建行并报告。在

运行时间计算在每个变量的开始前加上2,以确保它们不会启动0,并且可能被视为八进制。然后用减去开始时间的方法,用一个预先加上1的数字来产生一个应该是3位数(4代表毫秒)的结果。如果检测到的位数较少,则需要添加一个适当的数字,并从下一个较高的时间元素中扣除一个。在

动作“a”/“b”计时的处理基本相同,但以$记录开始/结束时间!$/#1#因为没有指示字符串action_a和{}的性质,因此我们不得不假设适当的事件不会重叠。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统使用Python编写的脚本(.py文件)可以通过传入命令行参数来接收外部输入。在终端执行Python脚本时,可以在python命令后面跟上脚本的路径,并在之后加上一些参数,用空格分隔开。 假设有一个名为example.py的Python脚本,现在要向它传入一个参数,那么在终端可以输入以下命令: `python example.py 参数值` 在Python脚本,可以通过sys模块的argv变量来获取传入的参数。首先,需要在脚本导入sys模块: `import sys` 然后,使用`sys.argv`就可以获取包含命令行参数的列表。argv的第一个元素是脚本的名称,从第二个元素开始才是真正的参数值。因此,可以通过索引来获取传入的参数值: `param = sys.argv[1]` 现在,变量param就保存了传入的参数值,可以在脚本进行进一步的处理。 需要注意的是,sys.argv的参数都是以字符串的形式进行传递的。如果需要将参数转换为其他类型(如整数或浮点数),则需要进行类型转换操作。 sys.argv的长度可以通过len(sys.argv)来获取,可以在脚本添加逻辑判断,以确保在没有参数输入时不进行处理或给出提示信息。 总结起来,获取命令行参数的过程可以分为以下几个步骤: 1. 导入sys模块:`import sys` 2. 使用`sys.argv`获取参数列表。 3. 根据索引取出参数值并进行相应的处理。 以上就是在Linux系统使用Python脚本接收传入文件的参数的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值