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
相关产品推荐
相关产品推荐

