需要一些关于shell脚本上的awk/grep命令的帮助吗

需要一些关于shell脚本上的awk/grep命令的帮助吗,shell,awk,grep,Shell,Awk,Grep,这是关于 我有一个日志文件,我正在尝试编写一个shell脚本来查找暂停/播放是否发生(成功/失败) 脚本应执行以下操作: if ("trickModeRequest":{"rate":0.0}) { if ("status":"OK") printf("Pause Successful"); else if ("status":"GENERAL_ERROR") printf("Pause failed"); else if ("status":"UNRE

这是关于

我有一个日志文件,我正在尝试编写一个shell脚本来查找暂停/播放是否发生(成功/失败)

脚本应执行以下操作:

if ("trickModeRequest":{"rate":0.0})
{
   if ("status":"OK")
      printf("Pause Successful");
   else if ("status":"GENERAL_ERROR")
      printf("Pause failed");
   else if ("status":"UNRECOGNIZED REQUEST")
      printf("Pause failed");
}
同样地:

if ("trickModeRequest":{"rate":1.0})
{
   if ("status":"OK")
      printf("Play Successful");
   else if ("status":"GENERAL_ERROR")
      printf("Play failed");
   else if ("status":"UNRECOGNIZED REQUEST")
      printf("Play failed");
}
我的脚本文件:

logfile=$1

awk '/trickModeRequest/ && /status\"\:\"GENERAL_ERROR/{ print "trickModeRequestFAILED" } /trickModeRequest/ && /status\":\"OK/ {print "trickModeRequestSUCCESS"}  ' $logfile
问题是{“trickModeRequest”:{“rate”:0.0}或{“trickModeRequest”:{“rate”:1.0}不在同一段日志中,所以我不知道如何区分暂停/播放

我的日志文件(logs.txt):


按照您的逻辑,您可以使用变量
type
来跟踪调用。事实上,在日志中,在响应之前,您总是有一行列出
接收到的json:…callParams
。如果您总是有这个序列(您的示例很难猜测),您可以执行以下操作:

  awk 'BEGIN { type=""; } /Received json/ && /"rate":1.0/ {type="play"} /Received json/ && /"rate":0.0/ {type="pause"} <your code>' $logfile
输出:

pause SUCCESSFUL
play SUCCESSFUL

谢谢Derlin.让我来验证iTunesed
是否已收到
,而不是
调用参数
。那么,它是否有效?
awk 'BEGIN{ type=""; } /trickModeRequest/ && /status\"\:\"GENERAL_ERROR/{ print type, "FAILED" } /trickModeRequest/ && /status\":\"OK/ {print type, "SUCCESSFUL"} /Received json/ && /"rate":1.0/ {type="play"} /Received json/ && /"rate":0.0/ {type="pause"} ' $logfile
pause SUCCESSFUL
play SUCCESSFUL