プレフィックスとサフィックスの間の内容を削除する方法

プレフィックスとサフィックスの間の内容を削除する方法

接頭辞と接尾辞(複数行)の間の内容だけを削除したいと思います。私のプレフィックスとサフィックスは削除しないでください。

私はこれを試しましたが、私のプレフィックスとサフィックスは削除されました。

sed -i "/prefix =/,/suffix =/d" myfile.txt

コンテンツ:

prefix = Content that i want to delete.
That includes multiple lines as
well as ASCII characters.
suffix = ,

出力:

prefix = 
suffix = ,

ベストアンサー1

1つの可能な方法は、awkを使用して=フィールド区切り文字として使用することです。

$ awk -F'=' 'BEGIN{OFS="=";};/^prefix/{$2=""; print; noprint=1};/^suffix/{noprint=0;print};noprint{next;};' input.txt
prefix =
suffix = ,

サフィックスの前後に別のコンテンツを取得するには、少し変更して同じ方法を使用できます。

$ awk -F'=' '/^prefix/{$2=""; printf "%s%s\n",$1,FS; noprint=1};/^suffix/||!noprint{noprint=0;print};noprint{next;};' input.txt
things beforeprefix
prefix =
suffix = ,
things after suffix

もちろん、次のように短縮できます。

$ awk 'BEGIN{FS=OFS="=";};/^prefix/{p=1;$2="";print};/^suffix/{p=0};!p' input.txt
things beforeprefix
prefix =
suffix = ,
things after suffix

おすすめ記事