使用sed只包含一个新行的不那么丑陋的方式?

使用sed只包含一个新行的不那么丑陋的方式?,sed,Sed,有很多指南,手册,快速指南,关于它的问题/答案:没有人是简单和客观的 这是一个典型的问题,几乎所有的文本编辑器都会因大文件XML或HTML“全部在一行”而崩溃,因此我们需要确定哪个标记将接收\n并替换所有出现的,如果我了解您在寻找什么,您可以尝试以下方法: sed's/\n/g'file.htm 这与您链接的anwser非常接近。 在我看来,它已经很简单了,它用一个新行字符替换标记,然后再次写入标记。 但是,我不认为您需要这个“$”。您尝试过什么?它是如何失败的?perl-pe的/(string

有很多指南,手册,快速指南,关于它的问题/答案:没有人是简单和客观的


这是一个典型的问题,几乎所有的文本编辑器都会因大文件XML或HTML“全部在一行”而崩溃,因此我们需要确定哪个标记将接收
\n
并替换所有出现的
,如果我了解您在寻找什么,您可以尝试以下方法:

sed's/\n/g'file.htm

这与您链接的anwser非常接近。 在我看来,它已经很简单了,它用一个新行字符替换标记,然后再次写入标记。
但是,我不认为您需要这个“$”。

您尝试过什么?它是如何失败的?
perl-pe的/(string)/\n$1/”input
Hi@choroba,很抱歉,现在包括一个sed命令的示例。
sed
有解决方案,但sed有很多实现,并不都允许简单的解决方案。改进sed是perl的动机之一!我的第一个用法是
sed'/
s
代表替换。从sed手册页:
s/regexp/replacement/尝试将regexp与模式空间匹配。如果成功,则替换与替换匹配的部分 @ PeterKrauss,请考虑接受答案,如果你认为它是正确的,适合你的问题。不带前导的
s
的搜索用于确定要对哪些行执行操作
s//
是一个动作。所以
sed'/foo/s/bar/bye/g'
的意思是“只有在有foo的行上才用bye替换bar。”GNU有一本很棒的手册。请注意:这个解决方案并不适用于sed的所有实现。