This stackoverflow question有一个答案,用sed替换换行符,格式为sed ':a;N;$!ba;s/\n/ /g' .
这适用,但不适用于\ r,\ n等特殊字符 .
我想要做的是用文字\ n替换换行符 . 试着
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"}]}]}
4 回答
这应该适用于
LF
或CR-LF
行结尾:这就是你要做的吗?
甚至:
首先在输入文件上运行dos2unix,如果你愿意,可以去掉
\r
,或者在printf之前使用带有GNU awk的-v RS='\r?\n'
或者使用sub(/\r$/,"");
,或者使用其他十几个简单明了的方法来处理它 .sed用于单独行的简单替换,即全部 . 对于其他任何你应该使用awk .
你可以使用
sed
和tr
来做到这一点:但是这会在最后添加一个额外的
\n
.这里有一个小python脚本,用于以递归方式将'\ r \ n'替换为目录中的'\ r'导入os import sys