この活動は中止されました。以下のtxtファイルがあります。
0112 00000 34 JOB RECOVERY status poll (ORDERID 2N000, RUNNO 0001) ACCEPTED, OWNER
0112 00000 35 JOB RECOVERY status poll (ORDERID 2N000, RUNNO 0001)STARTED , APPL TYPE
0112 00000 36 JOB PROCESS Kafka(ORDERID 2N001, RUNNO 0001) ACCEPTED , OWNER
0112 00001 37 JOB PROCESS Kafka (ORDERID 2N001, RUNNO 0001) STARTED, APPL_TYPE
0112 00001 38 JOB RECOVERY status poll(ORDERID 2N000, RUNNO 0001) ENDED OK ,ELAPSED - 0.02 SEC
0112 00003 39 JOB PROCESS (ORDERID 2N001, RUNNO 0001) ENDED OK, ELAPSED - 2.28 SEC
orderid
各ジョブの経過時間値を取得する必要があります。orderid
2N000の場合、経過時間0.02秒を取得する必要があります。これは、orderid
シェルスクリプトを使用してファイルからインポートするために必要なすべてに対応します。
このような出力が必要です
orderid jobname ELAPSED
2N000 RECOVERY status 0.02
2NOO1 PROCESS Kafka 2.28
答え1
このsed
スクリプトは必要な操作を実行する必要があります。
sed '/ELAPSED/!d;s/.*JOB \([^(]*\)(ORDERID \([^,]*\).*- \([0-9.]*\).*/\2 \1 \3/'
実際のデータに合わせて調整する必要があるかもしれないので、これが何をするのかを説明します。
/ELAPSED/!d
d
!
()を含まないすべての行を削除してくださいELAPSED
。これELAPSED
は、必要なすべての情報が含まれているためです。その文字列が他の場所に表示される場合は、それに応じてスクリプトを調整する必要があります。- 次の
s
代替コマンドには、行から抽出する正しい部分を識別する必要がある複雑な正規表現が含まれています。.*JOB
JOB
キーワードの前のすべての項目と一致します。同様に、JOB
ジョブ名の中にも表示される場合は追加条件が必要ですが、どうすればわかりますか?[^(]*
(
orderidが開始される前のすべての項目と一致します。\(\)
交換部品に配置できるように部品が囲まれています\1
。RECOVERY status poll
出力のように欠けているのではなく、フルジョブ名を取得できることに注意してください。poll
(ORDERID
言った内容と一致するので、次の部分が注文されます。[^,]*
次のコンマの前のすべての項目と一致します。これは再び\(\), so it can be referred to as
\2` に囲まれています。.*-
最後のダッシュと次のスペースを含むすべてのアイテムと一致します。時間が経つ前に全部食べたい[0-9.]*
いくつかの数字とポイントです。これは経過時間に合わなければならず、部分文字列番号でなければなりません。\3
.*
残りの行と一致します。SEC
- 代替文字列は、
\2 \1 \3
3つの要素を目的の順序で貼り付け、要素間にスペースを追加します。必要に応じて調整してください。 - 列ヘッダーを最初の行に配置するには、直接実行してください。
答え2
私も「シェルスクリプトの使用」を無視しました。だから私はawkを使ってみました。
BEGIN {
# TAB between the words
print "orderid jobname Elapsed"
}
/ ACCEPTED/ {
p = match($0,/^.... ..... .. ... ([A-Za-z ]*).*ORDERID (.....)/,A)
if (p>0) {
# print A[2]
O[A[2]] = A[1]
}
}
/ELAPSED/ {
p = match($0,/ORDERID (.....).*ELAPSED - (.*) SEC$/,A)
# TAB between the double quotes
print A[1] " " O[A[1]] " " A[2]
}
タブで区切られた形式を返します。
orderid jobname Elapsed
2N000 RECOVERY status poll 0.02
2N001 PROCESS Kafka 2.28