1. ホーム
  2. regex

改行文字をリテラルに置き換える

2023-08-30 09:01:37

質問

このstackoverflowの質問 には、sedで改行を置換するための回答があります。sed ':a;N;$!ba;s/gn/ /g'という形式を使用します。

これはうまくいくが、 \r, \n などの特殊文字ではうまくいかない。

私がやろうとしているのは、改行文字をリテラル(文字)の "en "で置き換えることです。 試してみると

sed ':a;N;$!ba;s/\n/\\n/g'

sed ':a;N;$!ba;s/\n/\\\n/g'

また

sed ":a;N;$!ba;s/\n/'\'n/g"

といった具合ですが、すべて無駄です。Sedは、改行文字を...改行文字に置き換え続けています。

感想は?

最初の回答の後に編集されました。

完全を期すために、実行されたコマンドは:

PostContent= cat $TextTable | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g'

TextTableは、以下の形式のJSON出力を含むテキストファイルへのリンク変数です。

{"posts":[{"title":"mysupertest","slug":"bi-test","markdown":"##TEST
First things first !
To TEST this TEST TEST, click the download button below.
If you need more information about the TEST TEST, you can  read the Table of Contents below.

<a href='/assets/TEST.pdf' style='border-radius:5px; padding: 4px 15px; background-color:#008CBA; color:white; text-decoration:none; float:right;' download> Download </a>


##TEST OF TEST


###TEST TEST PLATFORM TEST GUIDE
WaTESTve TEST SetupTEST
TESTTEST
TESTTESTETESTTETSTTEST
TESTTESTTTETST
TESTTES
TESTTESTESSTSTESTESTTES
TEST","image":"http://localhost:3000/myimage.jpg","featured":false,"page":false,"status":"draft","language":"en_US","meta_title":null,"meta_description":null,"author":"4","publishedBy":null,"tags":[{"uuid":"ember2034","name":"implementation guides","slug":null,"description":null,"meta_title":null,"meta_description":null,"image":null,"visibility":"public"}]}]}

どのように解決するのですか?

これは LF または CR-LF という行末になります。

sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' file