Regex shell脚本中的模式匹配
我需要模式匹配方面的帮助。我将以下文本作为命令的输出Regex shell脚本中的模式匹配,regex,shell,scripting,Regex,Shell,Scripting,我需要模式匹配方面的帮助。我将以下文本作为命令的输出 j-13PUDS1BDAAKK RUNNING ec2-54-242-150-167.compute-1.amazonaws.com Log Processing Job Flow COMPLETED Setup Hive RUNNING CopyLogs PENDING CopyLogs PENDING CopyLogs
j-13PUDS1BDAAKK RUNNING ec2-54-242-150-167.compute-1.amazonaws.com Log Processing Job Flow
COMPLETED Setup Hive
RUNNING CopyLogs
PENDING CopyLogs
PENDING CopyLogs
PENDING CopyLogs
我需要将CopyLogs输出与Completed匹配。因此,基本上在执行命令之后,输出应该是
COMPLETED CopyLogs
COMPLETED CopyLogs
COMPLETED CopyLogs
COMPLETED CopyLogs
如何在do while循环中实现这一点(对于重试逻辑)。我尝试了以下方法
while :; do
result=$(elastic-mapreduce --jobflow $JOBFLOW --list) //lets say this returns the above output
[[ $result == +(*RUNNING*|*PENDING*|*WAITING*) ]] || break
done
echo "result now has no RUNNING or PENDING or WAITING"
但我只需要为“复制日志”这样做。我如何做到这一点
result=$(elastic-mapreduce --jobflow $JOBFLOW --list|grep -P '(COMPLETED[[:space:]]*CopyLogs)')
结果
将携带所需的输出
-p perl正则表达式,请检查
man grep
,奇怪的是,操作系统似乎已经在某种程度上解决了这个问题。看见