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

Mac OSX下sed的a(追加)命令失效,如何实现行后追加文本?

Mac OS X 下 sed 追加命令的正确用法

我想在匹配行的下一行添加文本以更新文件,按照GNU sed文档的写法,执行以下命令可以实现需求:

$ seq 3 | sed '2a hello'
1
2
hello
3

但在Mac OSX上这个命令无效,2a hello不被识别为有效sed命令。改成s/2/a hello/虽然能解决报错,但只是把第2行替换成了a hello:

$ seq 3 | sed "s/2/a hello/"
1
a hello
3

解决方法

Mac自带的是BSD版本的sed,和GNU sed语法存在差异,正确的追加写法需要注意换行与转义:

1. 按行号追加内容

要在第2行后追加hello,正确命令如下:

seq 3 | sed '2a\
hello'

执行后输出结果:

1
2
hello
3

2. 匹配指定字符串后追加内容

比如文件内容如下:

one 
two 
four

想要在two和four之间添加three,执行以下命令:

sed "/two/a\
three" 你的文件名

执行后文件内容会更新为:

one 
two 
three
four

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:40:43