如何使用sed
命令将换行符("\n
")替换为空格("")?
我尝试了一下,但没有成功:
sed 's#\n# #g' file
sed 's#^$# #g' file
我该如何修复它?
发布于 2013-02-13 20:12:59
一种更短的awk替代方案:
awk 1 ORS=' '
解释
awk程序由由条件代码块组成的规则组成,即:
condition { code-block }
如果省略代码块,则使用默认值:{ print $0 }
。因此,1
被解释为true条件,并对每一行执行print $0
。
当awk
读取输入时,它根据RS
(记录分隔符)的值将其拆分成记录,默认情况下,该值是一个换行符,因此awk
默认情况下会逐行解析输入。拆分还涉及从输入记录中剥离RS
。
现在,当打印一条记录时,ORS
(输出记录分隔符)被附加到它后面,默认情况下又是一个换行符。因此,通过将ORS
更改为空格,所有换行符都将更改为空格。
发布于 2015-05-05 17:43:38
GNU有一个选项-z
,用于空分隔开的记录(行)。你可以直接拨打:
sed -z 's/\n/ /g'
发布于 2009-08-09 19:25:27
Perl版本的工作方式符合您的预期。
perl -i -p -e 's/\n//' file
正如评论中所指出的,值得注意的是,此编辑已就位。如果你的regular expression不像你想象的那么聪明,-i.bak
会在替换之前给你一个原始文件的备份。
https://stackoverflow.com/questions/1251999
复制相似问题