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

如何使用SED替换空格+换行符?文本合并需求求助

用SED合并拆分的文本行

原始输入文本:

jono| 
Jakarta|smp
jojon|jakarta|smp
jojo|bandung|sma
riki| 
Jakarta|smk

期望输出:

jono|Jakarta|smp
jojon|jakarta|smp
jojo|bandung|sma
riki|Jakarta|smk

你之前的两条SED命令失效原因:

  • 第一条命令正则写法错误:字符组[|\s^[[:space:]]*$]里的^、$等锚点被当成普通字符,且未处理换行场景,根本匹配不到目标内容。
  • 第二条命令尝试匹配跨行的|\s\n,但SED默认逐行处理文本,模式空间里不会包含换行符(除非主动读取下一行),所以匹配永远不会触发。

正确的SED命令:

sed -i '/|[:space:]]*$/{N;s/|[[:space:]]*\n/|/}' tes.txt

命令解释:

  1. /|[:space:]]*$/:匹配所有以|加任意数量空白字符结尾的行
  2. {N;...}:对匹配到的行执行操作块:
    • N:读取下一行内容到当前模式空间,此时模式空间包含两行内容(用换行分隔)
    • s/|[[:space:]]*\n/|/:把|后面的空白字符+换行符替换成单个|,完成两行合并

如果是BSD sed环境(比如macOS),需把-i改成-i '',避免生成备份文件:

sed -i '' '/|[:space:]]*$/{N;s/|[[:space:]]*\n/|/}' tes.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:00:17