这个stackoverflow问题有一个用sed替换换行符的答案,使用sed':a; N; $!ba; s/\n// g'格式.
这适用,但不适用于\ r,\n等特殊字符.
我想要做的是用文字\n替换换行符.试着
sed ':a;N;$!ba;s/\n/\\n/g'
Run Code Online (Sandbox Code Playgroud)
和
sed ':a;N;$!ba;s/\n/\\\n/g'
Run Code Online (Sandbox Code Playgroud)
也
sed ":a;N;$!ba;s/\n/'\'n/g"
Run Code Online (Sandbox Code Playgroud)
但一切都无济于事.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"}]}]}
Run Code Online (Sandbox Code Playgroud)
Ed *_*ton 65
这就是你要做的一切吗?
$ cat file
a
b
c
$ awk '{printf "%s\\n", $0}' file
a\nb\nc\n$
Run Code Online (Sandbox Code Playgroud)
甚至:
$ awk -v ORS='\\n' '1' file
a\nb\nc\n$
Run Code Online (Sandbox Code Playgroud)
首先在输入文件上运行dos2unix,\r如果你愿意,可以去掉s,或者使用-v RS='\r?\n'GNU awk或者sub(/\r$/,"");在printf之前做或者用十几种清晰,简单的方法处理它.
sed用于单个行上的简单替换,即全部.对于其他任何你应该使用awk.
anu*_*ava 27
这应该适用于两个LF或CR-LF行结尾:
sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' file
Run Code Online (Sandbox Code Playgroud)
Wal*_*r A 16
通过该-z选项,您可以执行以下操作
sed -z 's/\n/\\n/g' file
Run Code Online (Sandbox Code Playgroud)
或者
sed -z "s/\n/\\\n/g" file
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用sed和执行此操作tr:
sed 's/$/\\n/' file | tr -d '\n'
Run Code Online (Sandbox Code Playgroud)
然而,这将\n在最后添加额外的.
如果它对任何人有帮助,我正在寻找这个问题的反面:用换行符替换字符串中的文字 '\'n。我设法用 sed 解决它,如下所示:
_s="foo\nbar\n"
echo $_s | sed 's/\\n/\n/g'
Run Code Online (Sandbox Code Playgroud)