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

Mac OS下sed循环无法正常工作(原Linux可用)求助

Mac下sed删除换行符失效的解决方案

Mac自带的是BSD版本sed,和Linux上的GNU sed语法有差异,这就是你原来的命令失效的核心原因。给你两个可行的解决方法:

方法1:用tr命令(简单高效,跨平台兼容)

直接用tr命令删除所有换行符,不用纠结sed的版本差异:

tr -d '\n' < temp

方法2:适配BSD sed的写法

如果一定要用sed,调整脚本为BSD兼容的版本:

sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g' temp

脚本逻辑说明:

  • :a 定义一个循环标签
  • N 将下一行内容追加到当前处理空间中
  • $!ba 只要当前不是最后一行,就跳回标签继续循环,直到把所有行都读入处理空间
  • s/\n//g 一次性替换掉处理空间内所有的换行符

你原来的命令失效,主要是因为BSD sed在跳转逻辑、换行符处理上和GNU sed存在细节差异,调整后即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:14:54