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

如何使用Unix命令移除非空格起始行的换行符

用Unix命令合并非空格开头的行到前一行

方案1:使用awk

这是最直观的实现方式,核心逻辑是通过判断行首是否为空格,决定是换行打印还是追加到上一行:

awk 'NR==1{line=$0;next} /^ /{print line;line=$0;next} {line=line $0} END{print line}' input.txt

命令说明

  • NR==1{line=$0;next}:第一行直接存入变量line,跳过后续逻辑
  • /^ /{print line;line=$0;next}:若当前行以空格开头,打印之前缓存的内容,再将当前行存入缓存
  • {line=line $0}:若当前行不以空格开头,直接追加到缓存内容末尾
  • END{print line}:处理完所有行后,打印最后缓存的合并内容

方案2:使用sed

借助sed的模式空间和暂存空间完成行合并,适合习惯sed语法的场景:

sed -n '1{h;b};/^ /{x;p;x};H;${x;p}' input.txt

命令说明

  • 1{h;b}:第一行存入暂存空间,直接跳转到下一行
  • /^ /{x;p;x}:若当前行以空格开头,交换暂存空间与模式空间,打印后再交换回去
  • H:将当前行追加到暂存空间(不带换行符)
  • ${x;p}:处理到最后一行时,交换并打印暂存空间的内容

输入输出示例

输入文本

NOR2X2 U68695 
(n102890)
 AO21X4 U68696 ( .
A0(mbw4[84])
311)

输出结果

NOR2X2 U68695 (n102890)
 AO21X4 U68696 ( .A0(mbw4[84])311)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:15:53