Perl Oozie日志的模式匹配

Perl Oozie日志的模式匹配,perl,bash,unix,hadoop,oozie,Perl,Bash,Unix,Hadoop,Oozie,使用了Oozie命令 oozie jobs -oozie http://localhost:11000/oozie -localtime | grep "2013-05-08" > Input.txt Oozie日志(Input.txt) 我想要一个额外的列作为“Status”,它将状态消息存储为“SUCCESS/RUNNING/KILLED/SUSPENDED/Prep” 我们将从第二列获得状态“消息,如 我无法从上面的文本中猜出分隔符。因此,我们可以使用AWK/cut/substri

使用了Oozie命令

oozie jobs -oozie http://localhost:11000/oozie -localtime | grep "2013-05-08" > Input.txt
Oozie日志(Input.txt)

我想要一个额外的列作为“Status”,它将状态消息存储为“SUCCESS/RUNNING/KILLED/SUSPENDED/Prep”

我们将从第二列获得状态“消息,如

我无法从上面的文本中猜出分隔符。因此,我们可以使用AWK/cut/substring概念

Status messages are static . Job names are dynamic.
将出现4条状态消息

  • 成功
  • 运行
  • 准备
  • 杀死
  • 暂停
所需输出

61-oozie     DPro chronicles      users     2013-05-08 04:47        2013-05-08 04:53    SUCCEEDED
61-oozie     DP chronicles      users     2013-05-08 04:47          -       RUNNING
61-oozie     DProcess chronicles      users     2013-05-08 04:42        2013-05-08 04:48    Suspended
61-oozie    D chronicles      users     2013-05-08 04:07        2013-05-08 04:09    KILLED
i、 e.前状态、状态、后状态->前状态、后状态、状态

由于输入和所需输出的状态之间似乎存在差异,例如“ProcessSuspended”in和“SUSPENDED”out,因此您可能还希望交换这些状态:

sed 's/(\w+)(SUCCEEDED|RUNNING|Prep|KILLED|SUSPENDED)(\s+.+)$/\1\3 \2/g' | sed 's/ProcessSuspended$/SUSPENDED/g'
或者使用Perl进行查找

i、 e.前状态、状态、后状态->前状态、后状态、状态

由于输入和所需输出的状态之间似乎存在差异,例如“ProcessSuspended”in和“SUSPENDED”out,因此您可能还希望交换这些状态:

sed 's/(\w+)(SUCCEEDED|RUNNING|Prep|KILLED|SUSPENDED)(\s+.+)$/\1\3 \2/g' | sed 's/ProcessSuspended$/SUSPENDED/g'

或者使用Perl进行查找。

提取所需状态并将其放在行的末尾

perl -pe 's/\B(succeeded|running|suspended|killed|prep)//i and $w=$1 and s/$/    $w/' file

提取所需状态并将其放在行的末尾

perl -pe 's/\B(succeeded|running|suspended|killed|prep)//i and $w=$1 and s/$/    $w/' file