sed通过换行符替换字符串,但不是相反

时间:2014-05-05 13:39:23

标签: bash sed

我正在尝试替换换行符,我想要使用sed(请不要建议其他工具)。要用字符串替换换行符,我正在尝试

sed 's/\n/string/g'

工作,至少在我的系统上(bash在Ubuntu 12.04上)。但是以下

sed 's/string/\n/g'

会用换行符替换所有出现的string

例如,请考虑以下file

hello
there

sed 's/\n/ /g' file给了我同样的信息:

hello
there

但是sed 's/hello/hello\n/g' file给了我一个换行符:

hello

there

有些机构可以告诉我为什么sed能够用<{1}} 一个新行但不能吗?

2 个答案:

答案 0 :(得分:3)

sed适用于输入行,你不能替换那样的换行符。您需要将输入行附加到模式空间。

sed ':a;$!N;s/\n/string/;ta' inputfile

会用string替换换行符。

答案 1 :(得分:0)

 sed -n '1h;1!H;$x;s/\n/string/gp' YourFile

其他方法首先加载到缓冲区并在结束时一次更改所有内容并打印结果