Text-Processing
在匹配模式後將該行拆分為下一行
在下面顯示的輸入文件中,我試圖找到字元串
job_type
並將其移動到下一行,如果它與 job_type 匹配。我試過這個,但它不工作:
sed "s/[A-Z][a-z]*job_type:/\njob_type:/g"
輸入:
insert_job: VAU_vaultnotification_ertgvfg_job job_type: xxx insert_job: VAU_vaultnotification_ertgvfg_frd job_type: yyy insert_job: VAU_vaultnotification_ertgvfg_erb job_type: SXC job_type: CMD insert_job: VAU_vaultnotification_ertgvfg_frd job_type: YUI
預期輸出:
insert_job: VAU_vaultnotification_ertgvfg_job job_type: xxx insert_job: VAU_vaultnotification_ertgvfg_frd job_type: yyy insert_job: VAU_vaultnotification_ertgvfg_erb job_type: SXC job_type: CMD insert_job: VAU_vaultnotification_ertgvfg_frd job_type: YUI
我不清楚您的要求,但也許您想要:
sed 's/\([[:upper:]][[:alpha:]_]*\)[[:space:]]\{1,\}\(job_type:\)/\1\ \2/g'
或者:
perl -Mopen=locale -pe 's/\b\p{Lu}\w*\K\s+(job_type:)/\n$1/g'
我會使用 GNU 做類似的事情
sed
:sed '/insert_job/s/job_type/\njob_type/'
第一部分
/insert_job/
在進行替換之前匹配一行。如果找不到“insert_job”(或您喜歡的任何正則表達式),它將不會進行替換。