2017-09-22 10 views
0

シェルスクリプトの文字列からJobidを取得したい。私は以下のコードを使って "CY"で始まるjobidを得ることができます。Regexがシェルスクリプト内の文字列からJobidを取得する

regex_jobid='CY[_0-9a-zA-Z]*' 
temp="CY0PNI91354 Production AutoSys Job has failed. Call 249-3344. EC=111" 

jobid="$(echo $temp | grep -oP "$regex_jobid")" 

echo "jobid="$jobid 

任意の文字で始まるjobIDの下になるには正規表現が必要です。

MD0PN000609 
ZCYNQNI93379 
CY0PNI04806 
CYM03922 
ZCHI70490 
ZCHI70511 
PMI02649 
PMI07530_sched_daily 
IRZ02141 
IWZ00306 
IWI99990 
USJ98000_sched 
SD000206 
WFI02272 
+0

は、任意の文字で始まる必要がありますし、英数字である必要があります – Sahruthika

+0

ジョブIDは常に1行目の最初の単語ですか? – yacc

+0

いいえ..どこでも文字列..例:ジョブを保持してください。MD000080_sched この場合、jobIDはMD000080_schedです – Sahruthika

答えて

0

あなたのパターンは、あなたがしたくないものをフィルタリング、その後、あなたが最初のトークンのようなすべてのジョブIDを見つける必要がある行のどこにでも発生する可能性がありますので:

regex_jobid="(CY|IR|MD|PM|ZC)" 
echo "$temp" \ 
|awk '{for (i=1;i<=NF;i++) {if ($i ~ "^[A-Z][A-Z][_0-9a-zA-Z]*$") print$i}}' \ 
|egrep "^$regex_jobid" 
関連する問題