我是 bash 脚本的新手。有人可以帮我解决以下问题吗?我有一个输出的日志文件,如下所示。
我正在尝试使用 logDurationMillis>=950ms 对输出行进行 grep
logAlias:Overall,logDurationMillis:382,logTimeStart:2019-07-24_15:30:06.075,logTimeStop:2019-07-24_15:30:06.107
logAlias:Overall,logDurationMillis:388,logTimeStart:2019-07-24_15:30:06.406,logTimeStop:2019-07-24_15:30:06.444
logAlias:Overall,logDurationMillis:545,logTimeStart:2019-07-24_15:30:06.583,logTimeStop:2019-07-24_15:30:06.638
logAlias:Overall,logDurationMillis:961,logTimeStart:2019-07-24_15:30:06.599,logTimeStop:2019-07-24_15:30:06.660
logAlias:Overall,logDurationMillis:640,logTimeStart:2019-07-24_15:30:07.197,logTimeStop:2019-07-24_15:30:07.237
logAlias:Overall,logDurationMillis:934,logTimeStart:2019-07-24_15:30:07.474,logTimeStop:2019-07-24_15:30:07.508
logAlias:Overall,logDurationMillis:336,logTimeStart:2019-07-24_15:30:07.546,logTimeStop:2019-07-24_15:30:07.582
Run Code Online (Sandbox Code Playgroud)
这些值始终位于第二个逗号分隔的列中。
gle*_*man 11
使用 awk:
如果您知道“logDurationMillis”是第二项:
awk -F'[:,]' -v limit=950 '$4 >= limit' file
Run Code Online (Sandbox Code Playgroud)除此以外
awk -F'[:,]' -v limit=950 '{
for (i=1; i<NF; i+=2)
if ($i == "logDurationMillis" && $(i+1) >= limit)
print
}' file
Run Code Online (Sandbox Code Playgroud)假设您的文件名为logFile,则此命令将执行以下操作:
egrep ',logDurationMillis:(9[5-9][0-9]|[1-9][0-9]{3,}),' logFile
Run Code Online (Sandbox Code Playgroud)