2016-01-21 91 views
1

我想編輯一個名爲BookDB.txt文件,其中包含UNIX的sed命令不起作用

Boy:Man:67.00:15:28 

Harry Potter - Order of Phoenix:J.K.Rowling:70.00:40:20 
Harry Potter - Half Blood Prince:J.K.Rowling:40.00:50:20 

這是我的命令

sed -i "s/""$title""/""$newtitle""/g" ./BookDB.txt 

它的工作原理。 但我想確保它編輯$ title的確切字符串,因爲如果讓我們說它包含「a」,那麼我的文件中的所有字母a都將被更改。 在這種情況下,我如何使用<\ \>

+1

爲什麼不''sed -i「s/$ title/$ newtitle/g」。/ BookDB.txt'?其中'$ title'和'$ newtitle'是包含術語和替換的變量。你的報價有點太多了。你不清楚爲什麼你建議邊界表達式,請添加額外的解釋。 –

+0

我的老師告訴我們,我們必須總是把變數引起來。我知道它看起來很蠢,但是他說如果變量包含一個空格,整個程序就會搞砸了。 –

+0

他就在那裏,但''s /././ g「'引號記錄在那裏,'/../ .. /'分隔符阻止了字符串的任何其他解釋。 ':)' –

回答

0

一個簡單的選擇,你可以嘗試,因爲標題開始在該行的開頭,用冒號分隔的,是這樣的:

sed -i "s/^""$title:/""$newtitle"":/g" BookDB.txt 

注意^錨比賽進行到行的開頭,並且:在匹配和替換部分。

+0

非常感謝您的幫助。這是一個非常聰明的方式 –