各ブロックは入力データで 'COL ID'で始まります。 「COL ID」とJOB_subidがある場合は印刷する必要があります。入力データに見られるように、 'COLID = 2'にはjob_subid(テーブル名の1 /左)がありますが、 'COLID = 3'または 'COLID = 4'にはありません。 COLID = 3/4の場合、job_subidを持たないため、 'no_data'を出力したいと思います。 このデータはどのように処理できますか?ブロック(awk)で文字列を扱う方法
AWK
/COL ID/ {JOBID=$4;}
/^[0-9]/ {
JOB_SUBID=$1;
printf "%s#%s",JOBID,JOB_SUBID;
printf "\n";
}
END {
if (JOB_SUBID="") then
JOB_SUBID="no_data";
printf "%s#%s",JOBID,JOB_SUBID;
printf "\n";
end if;
}
入力データ
COL ID : 2
PID : 26788
ID TABLE
------ ------------------------------
1 "SCOTT"."PRINCE01"
COL ID : 3
PID : 26788
COL ID : 4
PID : 26788
誤った結果
2#1
4#no_data
必要な結果
2#1
3#no_data
4#no_data
'場合は()目アン... if if'?あなたが考えている言語は分かりませんが、Arnold RobbinsのEffective Awk Programming、第4版からawkを学ぶことができます。組み込みの変数名との衝突を避けるため、大文字の変数名はすべて使用しないでください。 –