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

macOS中sed命令出现‘invalid command code ~’错误的解决咨询

适配macOS的sed步进输出命令写法

macOS自带的是BSD版本sed,和Linux系统的GNU sed语法存在差异,你用到的1~36p是GNU sed独有的步进行输出语法(表示从第1行开始,每36行输出一次),BSD sed不支持该写法,因此会抛出invalid command code ~的错误。

下面提供三种适配方案:

方案1:使用BSD sed原生语法实现

通过BSD sed的标签循环和计数逻辑模拟步进输出,命令如下:

sed -n '1{:loop;p;x;/^\(.\{35\}\)$/{x;b end};x;s/^/./;x;n;b loop};:end' filename

逻辑说明:从第1行开始,输出当前行后,通过字符计数累计跳过35行,完成后回到循环起点,实现每36行输出一次的效果。

方案2:用awk替代(更简洁跨平台)

awk的语法跨平台性更好,macOS自带awk,直接用以下命令即可实现相同需求:

awk 'NR % 36 == 1' filename

NR表示当前行号,行号对36取余等于1时输出该行,完美匹配原需求。

方案3:安装GNU sed(兼容原命令)

如果习惯使用GNU sed的语法,可以通过Homebrew安装GNU版本的sed:

brew install gnu-sed

安装完成后,使用gsed命令替代原生sed,即可直接运行原命令:

gsed -n '1~36p' filename

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:20:34