2013-11-28 91 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獲得的新行]