そのような入力があります。 job_typeの場合、*_jobの後の行を*_job行の末尾に移動し、ファイル全体を印刷する必要があります。次の行がjob_typeでない場合は印刷します。
SEDを介して* _jobを含む行のみを印刷できますが、ファイル全体を印刷することはできません。誰でも助けることができますか?
sed -i -n '/.*_job: .*/{h}; /job_type.*/{H;x;s/\n/ /;p}'
入力する。
update_job: YUHG_GHT_FGT_BOX
job_type: box
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XXXXXX
insert_job: TYYUH_JYUH_BOX
job_type: cmd
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XXX
insert_job: TYU_hju_poonj
job_type: CMD
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XXX
insert_job: YU_opoj_BOX job_type: BOX
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XX
insert_job: YU_opoj_BOX
job_type: BOX
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XX
予想O/P:-
update_job: YUHG_GHT_FGT_BOX job_type: box
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XXXXXX
insert_job: TYYUH_JYUH_BOX job_type: cmd
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XXX
insert_job: TYU_hju_poonj job_type: CMD
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XXX
insert_job: YU_opoj_BOX job_type: BOX
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XX
insert_job: YU_opoj_BOX job_type: BOX
condition : s(XXXYYUYBJHBJb) &
svcdesk_desc: XX
ベストアンサー1
あなたはできます:
sed '/_job/{N;/\
job_type/s/\
/ /;}' infile
行が含まれている場合は、拡張行を_job
読み込み、パターンスペースN
に\n
追加し、埋め込まれた改行文字を削除します(ここでは行をバックスラッシュに分解し、実際の改行を使用して\
実際の改行を使用します)。job_type
。