请看图片:
什么正则表达式会仅从非空行中删除所有行尾(而不是从空行中删除它们?这是来自超过 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]*$//'