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

寻求Linux命令行方案:单换行换空格,保留连续换行

需求:替换单个换行符为空格,保留连续换行

需要一个Linux命令行方案,实现将单个换行符替换为空格,但不修改连续换行符(即相邻有其他换行符的换行保留)。

示例

输入:

one two
three four
five six

seven eight
nine ten

输出:

one two three four five six

seven eight nine ten

说明:已知合法文本文件应以换行符结尾,若方案删除该结尾换行,后续可自行追加。tr无法完成此复杂逻辑,推测sed或awk可行,若不行则考虑Python/C实现,但自身sed/awk能力不足,寻求解决方案。

已查找相关问题,但现有方案会误删需保留的连续换行;了解sed基于行处理的特性,处理换行可能不是最优选择;找到的单字符替换sed方案不适用于换行符。

需求背景

nano编辑器的justify功能通过增减单个换行符使行填充指定长度,但其内置unjustify仅为撤销功能,需要真正的unjustify命令。

最终解决方案

已采用Ed Morton的方案,该方案逐行处理且兼容非GNU版本。最终适配nano的脚本如下:

cat << 'EOF' > $HOME/.local/bin/dejustify
#!/bin/sh
awk -v RS= 'NR>1{print ""} {$1=$1} 1' < "${1:-/dev/stdin}"
EOF
chmod u+x $HOME/.local/bin/dejustify

使用方法

  • 通过管道使用:
    printf "one
    two
    three
    four
    " | dejustify
    
  • 直接处理文件:
    dejustify <filename>
    
  • 在nano中使用:按<Ctrl>+<t>后输入|dejustify,即可实现文本反对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:00:01