接頭辞と接尾辞(複数行)の間の内容だけを削除したいと思います。私のプレフィックスとサフィックスは削除しないでください。
私はこれを試しましたが、私のプレフィックスとサフィックスは削除されました。
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