gpt4 book ai didi

regex - sed one-liner 删除所有单个换行符?

转载 作者:行者123 更新时间:2023-12-01 09:38:43 26 4
gpt4 key购买 nike

例如,

A paragraph's newlines would be removed let's say
it contained only single
newlines.

然后我想跳过的事情:
However.

Our previous pair of newlines wouldn't.

最佳答案

这不是一个 sed 解决方案——当然你总是可以通过 s2p 运行任何 sed——但是使用 perl 的一个非常简单的解决方案是:

% perl -i.orig -ne 'print unless /^$/' file1 file2 file3

这具有可扩展到其他空白行上的任何空白的优点,如空格和制表符:
% perl -i.orig -ne 'print unless /^\s*$/' file1 file2 file3

如果文件具有各种行结尾,如 CR 或 CRLF,您也可以这样做,假设您运行的是 perl 5.10 或更高版本:
% perl -0777 -i.orig -ne 's/\R+/\n/' file1 file2 file3

这会将一个或多个 Unicode 行分隔符的所有序列规范化为单个换行符。

如果您的 UTF-8 文件可能在其中包含(例如)U+00A0 NON-BREAK SPACE 在其他空行中,您可以通过使用 告诉 perl 它们是 UTF-8 来处理它们。 -CSD 命令行开关:
% perl -CSD -i.orig -ne 'print unless /^\s*$/' file1 file2 file3

更新

我真的不清楚你删除一个段落是什么意思。我认为您只是指将段落中的行连接起来。

如果是这样——如果你想做的是从段落中挤出换行符,那么你想这样做:
% perl -i.orig -00 -ple 's/\s*\n\s*/ /g' file1 file2 file3

它可能看起来不起作用,但确实有效:尝试一下。

关于regex - sed one-liner 删除所有单个换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com