2013-11-28 54 views
0

我想通过我的脚本来传递这行代码:
row=8
title="sometitle"
sed -i $rowi"$title" hi.csv
如何通过变量sed命令

其中row代表我想在一个CSV文件中插入一些东西,title该行表示的内容我想要插入该行。问题是sed将不会通过$row。我不能仅仅使用命令sed -i 8i"sometitle" hi.csv,因为rowtitle变量自从im将这个sed命令传递给forloop后发生了变化。有没有办法让我在sed命令中传递变量?在此先感谢家伙!

回答

1

我测试你的命令,我想你必须要指出的shell变量是什么,所以你必须用大括号括起来,就像这样:

sed -i ${row}i"$title" hi.csv 

编辑:另一种尝试,以避免错误(见注释):

sed "${row} i\ 
> $title 
> " hi.csv 
+0

我得到这个错误: 'sed:-e expression#1, char 1:预计在\'a','c'或'i''后面 – CrudeCoder

+0

@ user2143205:它适用于我的版本('sed(GNU sed)4.2.2')。查看文档,了解如何在您的版本中使用插入。它通常用于将它放在下面的行中,并用反斜杠转义换行符。该错误消息说明了一些事情。 **编辑**:我已经添加了相同的命令,但分割成不同的行。我认为它更适合不同的版本。 – Birei

+0

尽管出现错误,但它仍然做到了,所以非常感谢你!我真的是一个初学者,但我很高兴我能来这个社区寻求帮助,尽管我有多少业余爱好者。谢谢! – CrudeCoder

0
row=8 
title=="sometitle" 
sed "${row} i\\^J${title}" hi.csv > YourFinal.csv 

在ksh/AIX下测试(所以sed没有-i选项)[^ J是用CTRL + V + J获得的新行]