sed は #DRECONTENT を置き換えません。

sed は #DRECONTENT を置き換えません。

こんにちは。ここに私がファイルから置き換えようとしている内容の一部があります。

#DRECONTENT
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 CA0B0334 /9zFhSLWksoWG8ZgYQDup4jkWkSeGO/MFz5kyMk3JcXqXHHeAjVyr049/QJWE5prYcIK01x6z83C4M2GC7h/PN2k7ZwtkkpOLG3N3/RdBFHOsluLwIoS2HV1pqHL5pZ+wER/NQ==
Skip to main content (Press Enter).

次のように

#DRECONTENT
Skip

これを行うには、次のコマンドを使用します。

sed -e 's/#DRECONTENT\n.*\nSkip/#DRECONTENT/g' post.idx

しかしそれはそれを置き換えません。どんなアイデアがありますか?

ベストアンサー1

このsedユーティリティは行を読み込みます。これは、改行文字が行を区切るために使用され、削除されるため、入力で改行文字を一致させることができないことを意味します。

しかし、次のようにすることができます。

sed '/^#DRECONTENT$/ { N;N; s/\(\n\).*/\1Skip/; }' file

これは入力のすべての行をそのまま出力しますが、#DRECONTENT正しい行が見つかると、次の2行が入力バッファに追加されます。改行文字を区切り文字として使用(これはすべてがN行うことです。)次に、最初に挿入された改行文字の後のすべての内容を単語に置き換えますSkip

結果は、#DRECONTENT後ろの最初の行を削除し、次の行を単語に置き換えることですSkip。他のすべての行は変更されません。

標準は、sedコマンドの置き換え部分に改行文字を使用して挿入することはできません。一致する改行文字をキャプチャし、逆参照を使用して再挿入してこの問題を解決しました。\ns

おすすめ記事