【发布时间】:2016-01-28 13:50:43
【问题描述】:
我想在一行中添加一些文本:
sudo sed -i '5imytext 16/16' /file
现在我在文件的第 5 行添加了 mytext 16/16,但实际上我想添加文本 'mytext' 16/16(mytext 在单引号之间)。
我试过了
sudo sed -i '5i'mytext' 16/16' /file
但它没有用。有人可以帮我吗?
【问题讨论】:
我想在一行中添加一些文本:
sudo sed -i '5imytext 16/16' /file
现在我在文件的第 5 行添加了 mytext 16/16,但实际上我想添加文本 'mytext' 16/16(mytext 在单引号之间)。
我试过了
sudo sed -i '5i'mytext' 16/16' /file
但它没有用。有人可以帮我吗?
【问题讨论】:
在这些情况下使用双引号。因为:
'\'' 不起作用)"'\"" 会起作用)例子:
sudo sed -i "5i'mytext' 16/16" /file
【讨论】:
您尝试在插入字符串中使用的单引号会干扰 sed 命令周围的单引号。
最简单的做法是在 sed 命令周围使用不同的引号:
"5i'mytext' 16/16"
通常最好在 sed 命令周围使用单引号,但在这种情况下会更加棘手:
'5i'"'"'mytext'"'"' 16/16'
基本上,您需要以某种方式将单引号放在双引号内,在这种情况下,没有理由不将整个命令双引号。
根据 cmets 中 123 的建议,另一种方法是将 sed 命令放入脚本文件中:
5i'mytext' 16/16
然后使用-f 切换到sed:
sed -f script
这避免了使用两种引号的需要。
【讨论】:
sed -f scriptfile file