在特定行号

时间:2017-11-04 19:41:25

标签: bash

我使用curl抓取https://api.wordpress.org/secret-key/1.1/salt/的内容并将其放到bash变量中。我想将此文本块插入到特定行号的文件中 - 10

#!/bin/bash
salts=$(curl -s https://api.wordpress.org/secret-key/1.1/salt/)
sed -i '10i '"$salts"'' myfile.php

然而我一直收到错误

  

sed:-e expression#1,char 102:命令后的额外字符

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

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

1 个答案:

答案 0 :(得分:2)

使用awk

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

你也可以组合头尾

echo -e "$( head -9 file )\n$salts\n$( tail -n +10 file )"
它们似乎适用于包含许多特殊字符的变量。