You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MacOS下如何用sed在指定字符串的下一行添加新字符串?

解决MacOS原生sed插入行时的"command a expects \ followed by text"错误

我之前也踩过这个一模一样的坑!你想要在文件里'django.contrib.staticfiles',的下一行插入'rest_framework',,执行了这条命令:

sed '/'django.contrib.staticfiles',/a 'rest_framework',' file

结果直接收到错误提示:

sed: 1: "/'django.contrib.static ...": command a expects \ followed by text

哪怕给符号加了转义符\也没解决问题,对吧?

这其实是MacOS自带的BSD sed和GNU sed的语法差异导致的——BSD版本的sed在使用a命令插入行时,对格式的要求比GNU sed严格得多,比如换行、引号转义的处理逻辑不一样,手动调整很容易出错。

最省心的解决办法就是安装GNU版的sed(也就是gsed):

brew install gnu-sed

安装完成后,用gsed替换原来的sed执行命令,就能顺利完成插入操作了:

gsed '/'django.contrib.staticfiles',/a 'rest_framework',' file

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

火山引擎 最新活动