You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk或其他命令移除文本换行但保留段落空行?

解决方案

1. 使用awk命令

这个方法可以精准合并段落内换行,同时自动压缩连续空行为单个空行:

awk '
    /^[[:space:]]*$/ {
        if (!blank_printed) {
            print ""
            blank_printed = 1
        }
        next
    }
    {
        printf "%s", $0
        blank_printed = 0
    }
    END { print "" }
' my_text.txt > new_text.txt
  • 逻辑:遇到空行(含全是空格的行)时,仅输出一个空行并标记;非空行直接拼接内容不输出换行;最后在结尾补换行保证格式完整。

2. 使用sed命令

通过循环合并非空行的换行符,保留段落间空行:

sed -e ':a' -e '/^$/!{N;s/\n/ /;ba}' my_text.txt > new_text.txt
  • 逻辑:定义循环标签a,若当前行非空,就读入下一行(N),将两行间的换行替换为空格,回到标签继续循环合并;空行直接保留输出。

3. 使用perl命令

借助段落模式快速处理,代码更简洁:

perl -00 -pe 's/\n/ /g' my_text.txt > new_text.txt
  • 逻辑:-00启用段落模式(以空行分隔文本块),-pe逐段处理,把每个段落内的所有换行替换为空格,段落间自动保留空行。

内容的提问来源于stack exchange,提问作者Moqtite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:16:04