需要一个正则表达式来删除文本文件中的行尾,但空白行除外

需要一个正则表达式来删除文本文件中的行尾,但空白行除外

请看图片:

替代文本

什么正则表达式会仅从非空行中删除所有行尾(而不是从空行中删除它们?这是来自超过 8000 行的文本文件。

64 位 Vista。

答案1

我的方法是,在 Word 中打开它,查找并替换 ^p^p(连续两个段落末尾),将其替换为文件中未使用的字符,如“|”。然后,我将用空格替换所有 ^p。然后,我将返回并将“|”替换为 ^p。

答案2

如果您尝试将每行末尾有换行符的段落转换为每个段落内的连续文本:

现在是所有善良的
人伸出援手帮助自己
国家的时候

进入

现在是所有善良的人伸出援手帮助国家的时候了\n
\n

然后像这样的事情应该可以工作:

sed -n '1{x;d};H;${x;s|\([^\n]\)\n\([^\n]\)|\1 \2|gp}' file

或者

sed ':a;$!N;s|^\n||;s|\n\([^\n]\+\)$| \1|;ta;p;D' file

答案3

这取决于您拥有什么正则表达式包,无论是否具有前瞻功能。

我个人会这样做:

-- 删除尾随空格,这确保“空白”行是 \n\n

s/^[ \t][ \t]*$//

-- 如果是单数换行符,则替换

s/([^\n])\n([^\n])/\1 \2/

这实际上取决于你的正则表达式包

答案4

使用 sed 我会做类似的事情:

sed 's/[ \t]*$//'

相关内容