macos - 使用 sed 在文件末尾添加新行
问题描述
我需要在文件末尾添加一个新行。但是当我在 MacOS 上运行 sed 命令时出现错误。
我运行的命令
sed -i'' -e '$a\wrapper{gradleVersion='5.5'}' build.gradle
我得到的错误:
sed: 1: "$a\wrapper{gradleVersio ...": extra characters after \ at the end of a command
解决方案
最简单的答案:不要使用sed
echo "wrapper{gradleVersion='5.5'}" >> build.gradle
很简单吧?
如果您想忽略我的建议并继续使用sed
, 来完成 @shellter 评论:
a
在 MacOS sed 上,您需要在使用命令时在要添加的文本之前添加换行符。默认情况下,MacOS sed 不会在您要添加的文本之后添加换行符,并且因为您希望文件保持 POSIX 标准,所以您需要添加它
你可以做 :
sed -i '' -e '$a\
<text to add>
' <file>
- 因为要添加单引号,所以需要将 sed 命令用双引号括起来,然后转义
$
,\
这使得使用起来特别烦人。
尝试这个 :
sed -i '' "\$a\\
wrapper{gradleVersion='5.5'}
" build.gradle
在 gnu-sed 上(使用brew brew install gnu-sed
安装),你会这样做:
gsed -i "\$a wrapper{gradleVersion='5.5'}" build.gradle
推荐阅读
- javascript - 在二维数组中分配值时如何捕获索引?
- varnish - 在清漆服务器上启用跟踪
- javascript - 使用 codeigniter 进行多个 ajax 调用
- excel - 在打开的工作表中运行 VBA 宏时的错误处理
- javascript - 更改复选框和单选按钮标签的字体大小
- amazon-web-services - 我可以在使用 aws ec2 run-instances 创建实例时标记接口吗?
- javascript - 嵌入式 YouTube API 的递归自定义缩略图不会重播
- python - python3中转换温度的小程序
- authentication - 为什么我的 jsreport 身份验证不起作用?
- c++ - 类构造函数中未定义的长度数组