无法添加带有sed的行?

无法添加带有sed的行?,sed,Sed,我正在尝试将此块添加到文件中第一行之后: sed -i '1a\ apply plugin: 'io.fabric' \ repositories { \ maven { \ url 'https://maven.fabric.io/public' \ } \ }' test.txt; 但在运行Internal时,我得到错误: sed:-e表达式1,char 108:意外的`}'两件事 如果在单引号中包含单引号,则会产生不良结果。在字符串中使用双引号或正确引用单引号 行尾的\

我正在尝试将此块添加到文件中第一行之后:

sed -i '1a\
apply plugin: 'io.fabric' \
repositories { \
  maven { \
    url 'https://maven.fabric.io/public' \
  } \ 
}' test.txt;
但在运行Internal时,我得到错误:

sed:-e表达式1,char 108:意外的`}'

两件事

如果在单引号中包含单引号,则会产生不良结果。在字符串中使用双引号或正确引用单引号

行尾的\后面不应该有任何内容

我们可以写这样的东西

sed "1a \\
apply plugin: 'io.fabric' \\
repositories { \\
  maven { \\
    url 'https://maven.fabric.io/public' \\
  } \\
}" input

注意这里\\是必需的,因为我们使用双引号。

除了在单引号中使用单引号的问题外,其他问题也可能会出现。。我建议将要添加的行放在文件中,并使用sed'1r lines.txt'test.txt,这对于所有情况都是可靠的解决方案…删除最后一个反斜杠后面的空格应该可以解决问题。@User101我省略了-我只是为了防止意外编辑输入文件。s/在单引号中包含单引号,它将产生不希望的结果/您不能在单引号/和s/中包含单引号,或正确引用单引号/或使用结束单引号跳出脚本,然后在shell中提供单引号,然后使用开始单引号/重新输入脚本foo'\bar',我想这就是您的想法,它不是在脚本中转义引号,而是退出脚本,在shell中提供一个转义的单引号,然后重新输入脚本。