首页 > 解决方案 > 使用 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

标签: macossed

解决方案


最简单的答案:不要使用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

推荐阅读