2016-01-21 86 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

非常感谢您的帮助。这是一个非常聪明的方式 –