Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex shell脚本中的模式匹配_Regex_Shell_Scripting - Fatal编程技术网

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

,奇怪的是,操作系统似乎已经在某种程度上解决了这个问题。看见