我想在一行中添加一些文本:
sudo sed -i '5imytext 16/16' /file
现在我已经在文件的第5行添加了mytext 16/16,但实际上我想添加文本'mytext' 16/16(mytext用单引号括起来)。我试过了
mytext 16/16
'mytext' 16/16
mytext
sudo sed -i '5i'mytext' 16/16' /file
但没有用,谁能帮帮我
ogsagwnx1#
您试图在插入字符串中使用的单引号与sed命令前后的单引号相互干扰。最简单的方法是在sed命令前后使用不同的引号:
"5i'mytext' 16/16"
通常,最好在sed命令两边使用单引号,但在这种情况下会更棘手:
'5i'"'"'mytext'"'"' 16/16'
基本上,你需要把单引号放在双引号里,在这种情况下,没有理由不把整个命令用双引号引起来。正如注解中的123所建议的,另一种方法是将sed命令放入脚本文件中:
5i'mytext' 16/16
然后使用-f开关执行sed:
-f
sed -f script
这避免了使用两种引号的需要。
6ioyuze22#
在这些情况下使用双引号。因为:1.单引号内不能有单引号。('\''无效)1.双引号内可以同时包含单引号和双引号。("'\""也可以)示例:
'\''
"'\""
sudo sed -i "5i'mytext' 16/16" /file
hxzsmxv23#
您可以在sed命令前后使用双引号,但如果您还需要插入双引号,这就没有帮助了用途:\x27例如:echo a|sed 's/a/\x27/'
\x27
echo a|sed 's/a/\x27/'
3条答案
按热度按时间ogsagwnx1#
您试图在插入字符串中使用的单引号与sed命令前后的单引号相互干扰。
最简单的方法是在sed命令前后使用不同的引号:
通常,最好在sed命令两边使用单引号,但在这种情况下会更棘手:
基本上,你需要把单引号放在双引号里,在这种情况下,没有理由不把整个命令用双引号引起来。
正如注解中的123所建议的,另一种方法是将sed命令放入脚本文件中:
然后使用
-f
开关执行sed:这避免了使用两种引号的需要。
6ioyuze22#
在这些情况下使用双引号。因为:
1.单引号内不能有单引号。(
'\''
无效)1.双引号内可以同时包含单引号和双引号。(
"'\""
也可以)示例:
hxzsmxv23#
您可以在sed命令前后使用双引号,但如果您还需要插入双引号,这就没有帮助了用途:
\x27
例如:
echo a|sed 's/a/\x27/'