2013-04-22 51 views
0

我试图插入这段文字...sed命令返回“无效的命令代码”

"error.emailNotActivated":"This email address has not been activated yet." 

...行号5使用SED。

这里是我的命令到目前为止

translated="This email address has not been activated yet."; 
sed -i '' -e '5i\'$'\n''"error.emailNotActivated":'"\"$translated\"" local.strings; 

可惜我不断收到错误消息“无效的命令代码T”。 看起来sed正在将冒号解释为命令的一部分。 任何建议如何我可以避免这一点?

编辑: 似乎更新错误(使用旧文件d'oh ...) 上述表达式正常工作正如其他建议。

+0

您在开始的时候需要一个空间:'-e'5i'应该是'-e“5i' – fedorqui 2013-04-22 15:24:12

+0

@fedorqui UPS小错字那里。不幸的是,我仍然得到相同的错误:/ – Zounadire 2013-04-22 15:33:03

回答

3

你为什么要为此与sed战斗?这是微不足道的AWK:

awk -v line='"error.emailNotActivated":"'"$translated"'"' ' 
NR==5{print line} {print} 
' file 

或:

awk -v line="\"error.emailNotActivated\":\"${translated}\"" ' 
NR==5{print line} {print} 
' file 
+0

如何插入一个变量到句子中? line ='“error.emailNotActivated”:$ translated' – Zounadire 2013-04-22 16:31:29

+0

@Zounadire我更新了我的答案。 – 2013-04-22 17:08:33

+1

ty给我看看有一个替代sed:D – Zounadire 2013-04-22 18:23:43

1

你在找这样的事吗?

$ seq 1 5 > file 

$ cat file 
1 
2 
3 
4 
5 

$ translated="\"error.emailNotActivated\":\"This email address has not been activated yet.\"" 

$ echo $translated 
"error.emailNotActivated":"This email address has not been activated yet." 

$ sed -i "5i $translated" file 

$ cat file 
1 
2 
3 
4 
"error.emailNotActivated":"This email address has not been activated yet." 
5 
+0

几乎我在做atm:D无论如何发现我的错误 – Zounadire 2013-04-22 18:22:59