Bash 在变量中特定行号处插入文本块

Bash 在变量中特定行号处插入文本块,bash,Bash,我获取了使用curl的内容,并将其分配给bash变量。我想把这段文字插入到一个文件中的特定行号-10 #!/bin/bash salts=$(curl -s https://api.wordpress.org/secret-key/1.1/salt/) sed -i '10i '"$salts"'' myfile.php 然而,我不断地得到错误 sed:-e表达式#1,字符102:命令后的额外字符 我认为使用curl返回的有效载荷中可能有回车符,但我不确定。我尝试使用tr将它们替换为\n,但不

我获取了使用curl的内容,并将其分配给bash变量。我想把这段文字插入到一个文件中的特定行号-10

#!/bin/bash
salts=$(curl -s https://api.wordpress.org/secret-key/1.1/salt/)
sed -i '10i '"$salts"'' myfile.php
然而,我不断地得到错误

sed:-e表达式#1,字符102:命令后的额外字符

我认为使用curl返回的有效载荷中可能有回车符,但我不确定。我尝试使用
tr
将它们替换为
\n
,但不确定在这种情况下如何使用它

我已经看过多个现有的,但我不能让他们在我的情况下工作。我不必为此使用sed。

使用awk

awk -v "s=$salts" 'NR==10{print s} 1' file

你也可以把头和尾巴结合起来

echo -e "$( head -9 file )\n$salts\n$( tail -n +10 file )"

它们中的一个似乎与包含许多特殊字符的变量一起工作。

谢谢,我实际上在最后使用了一种拆分和串联的变体